PDA

View Full Version : تابعی که مقدار درست یا نادرست را بر می گرداند.



farhadamin
دوشنبه 19 فروردین 1387, 00:46 صبح
سلام دوستان می خواستم یک تابعی طراحی کنم اگر یک مقدار (مربوط به دستگاه پول خرد کردن است...) از مقدار دیگری بزرگ تر بود مقدار درست را برگرداند وگرنه غلط...
توضیح:
مربوط به دستگاه پول خرد کردن است می خواستم اگر پول خرد های موجود در دستگاه از مقدار اسکناس ورودی کم تر بود این تابغ مقدار غلط را برگرداند و محاسبات که در تابغ های دیگه است انحام نشود... و اگر به اندازه کافی پول خرد بود مقدار درست را برگرداند... و محاسبات انجام شود..می دانم که از این باید استفاده شود... اما روش کار ار نمی دانم...

try {
// try block
}
catch (type1 arg) {
// catch block
}
catch (type2 arg) {
// catch block
}

}

توضیحات بیشتر این که...
اگر مقدار درست نبود باید throw کنه در یک استراکت مثلا
struct notEnoughMoney که البته عضوی نداره ... و گرنه باید catch کنه به تابعی که محاسبات را انجام میده....ممنون

MRHagh
دوشنبه 19 فروردین 1387, 06:07 صبح
اگر منظور شما را درست متوجه شده باشم , با توضیحاتی که شما دادید , میتونید از تابعی با نوع بازگشتی bool استفاده کنید و قسمت محاسبه مقدار پول خرد دستگاه و چک کردن این مقدار با اسکناس ورودی را در این تابع قرار دهید و متناسب جواب این محاسبه , مقدار true یا false را برگردانید

bool CheckCoinsNumber(int EnteredCash)
{
if(CoinsNumber<EnteredCash)
return false;
else
return true;
}
در ادامه برنامه و در توابع دیگر این مقادیر (true و false) را توسط یک if ساده چک کنید .

.
.
.
if(CheckCoinsNumber(EnteredCash))
//Continue the program
else
//Stop working
.
.
.
امیدوارم منظور شما رو درست متوجه شده باشم . موفق باشید ...

farhadamin
دوشنبه 19 فروردین 1387, 20:03 عصر
ممنون دوست عزیز در اصل می خواستم روش استفاده از catch را که در بالا گفتم را سوال کنم... ممنون می شم که اگر اطلاهاتی در موردش دارید بهم بگید....

Nima_NF
دوشنبه 19 فروردین 1387, 22:57 عصر
try / catch برای رسیدگی به خطاهای ناگهانی و غیر متعارف استفاده می شود،

برای کار شما باید از همان روش پست دوم و یا روش های مشابه استفاده کنید.

farhadamin
چهارشنبه 21 فروردین 1387, 01:45 صبح
می شه یک توضیحی در مورد catch و try بدید من در اصل می خواستم در این مورد سوال کنم که سوالم را اشتباه طرح کردم... من می حواستم این دو را در برنامه ام (دستگاه پول خرد کن) استقاده کنم..و دقیقا هم برای حطاهای غیر متعارف.... اما هر کاری کردم جواب نداد.... در پست اول یک مقدار در موردش توضیح دادم.... ممنون می شم راهنمایی کنی... البته یک کم جامع تر ممنون.....:لبخندساده:
http://barnamenevis.org/forum/showthread.php?t=99864&page=2

Nima_NF
چهارشنبه 21 فروردین 1387, 16:36 عصر
طرز کار try / catch به این شکل هست:
کدهای اصلی برنامه را در بین بلاک try قرار می دهید ، هرگاه در جایی به خطایی رسیدید آن مقدار یا exception خاص را throw می کنید، سپس با توجه به نوع داده ای خطایی که throw شده است بلاک catch ای که پارامتر ورودی آن از همان نوع داده ای می باشد اجرا خواهد شد.




try
{
isError = YourFunction ();
if (isError)
throw 2;
else
throw "No Error...";
}

catch( char *str )
{
cout << "No Error is found " << str << "\n";
}

catch(int num)
{
cout << "error for :" << num;
}

catch(...)
{
cout << "other exceptions";
}


از توانایی های try/catch این هست که می توانید مثلا کلاس خاصی را throw کنید تا تمامی مخرب های محلی اشیا ساخته شده آن قبل از throw شدن نیز فراخوانی شود.

برای دیدن برخی از کاربردهای این موارد به صفحات زیر مراجعه کنید که شامل مثال های زیادی می باشد، در هر حال try/catch آن چیزی نیست که شما از آن انتظار دارید:
http://www.java2s.com/Tutorial/Cpp/0120__Exceptions/0020__try-catch.htm
http://www.cplusplus.com/doc/tutorial/exceptions.html