PDA

View Full Version : سوال: اجرای دوباره برنامه با چه دستوری امکان پذبر است؟



MrasoolF
دوشنبه 04 دی 1391, 19:04 عصر
سلام.
یه برنامه دارم که آخرش میپرسه که میخوای دوباره اجرا شه یا نه؟
خوب اگه مخاطب بخواد دوباره اجراشه من باید چه دستوری به تابع بدم
میخوام برنامه عیناً دوباره از اول اول ران شه.
(مثلاً آخر برنامه گفتم اگه y یعنی ادامه و اگه n یعنی تمام)
ممنون

Arashdn
دوشنبه 04 دی 1391, 20:02 عصر
می تونید تمام کد های تایع رو تو یه while مثل زیر بزارید
char ch
while(ch == 'y')
{
//function jobs ....
}

aidinMC
دوشنبه 04 دی 1391, 20:41 عصر
با حلقه هم میشه ولی زیاد منطقی نیست
شما آخر تابع main میتونی یه همچین کاری کنی که مجددا فراخوانی بشه


if (ch == 'y')
main();

omidshaman
دوشنبه 04 دی 1391, 21:10 عصر
با حلقه هم میشه ولی زیاد منطقی نیست
شما آخر تابع main میتونی یه همچین کاری کنی که مجددا فراخوانی بشه

if (ch == 'y')
main();

اتفاقا با حلقه منطقی تره !!(کد Arash)
این کدی که شما نوشتین باعث هدر رفتن حافظه میشه چون هر بار که به main() میرسه یک کپی از کل متغیر ها + فانکشن و... درست میشه

smemamian
دوشنبه 04 دی 1391, 22:43 عصر
با goto نمیشه ؟‌ :متفکر:

هرچند میدونم استفاده از goto پیشنهاد نمیشه !

H_G_G_I
دوشنبه 04 دی 1391, 23:20 عصر
صدا زدن دوباره main اشتباهه چون باید تابع بسته شه تا متغییر هاش ازاد بشن !
اون طوری هر دفعه که main صدا زده بشه دوباره حافظه می گیره !
با goto هم میشه !

#include <iostream>

int main(int argc, char* argv[])
{
START_APP:
double l_array[4096];
l_array[32] = rand();
std::cout << l_array[32];
std::cin.get();
goto START_APP;
return false;
}


goto زیاد پیشنهاد نمیشه چون یکم خوانایی کد کم میشه ولی خیلی جاها بدرد می خوره !

aidinMC
سه شنبه 05 دی 1391, 12:52 عصر
اتفاقا با حلقه منطقی تره !!(کد Arash)
این کدی که شما نوشتین باعث هدر رفتن حافظه میشه چون هر بار که به main() میرسه یک کپی از کل متغیر ها + فانکشن و... درست میشه

خب ببینید من فک نکنم برنامه ی که این دوستمون نوشته انقد بزرگ باشه که تفاوت بین حلقه و فراخوانی مجدد رو حس کنه!!!
من گفتم منطقی نیست منظورم این بود که منطقی نیست آدم بیاد یه برنامه فرضا 50 -60 خطی رو تو یه حلقه بنویسه! برای اینکه کارش را بیوفته یه همچین پیشنهادی دادم....
ولی در کل درستش اینه که آدم برنامه رو به توابع کوچیکتر بشکونه و با استفاده از روش ترکیبی (فراخوانی و حلقه) برنامش رو از سر شروع کنه!