PDA

View Full Version : سوال: فراخوانی مجدد تابع main()



snbb000
دوشنبه 06 آذر 1391, 12:11 عصر
سلام
دوستان فرض کنید من 2 تا تابع دارم یکی main و یکی test
حالا توی تابع main یک سری سوال ها پرسیدی میشه و فرض میکنم کاربر مقداری رو وارد میکنه که باید تابع test عمل کنه
حالا تابع test عمل میکنه و یک سری کارارو انجام میده
حالا دوباره میخوام بعد از انجام کاراری test دوباره همون سوالات از کاربر پرسیده بشه یعنی دوباره Main اجرا بشه
چیکار باید کنم؟
ممنون

aidinMC
دوشنبه 06 آذر 1391, 13:06 عصر
سلام.
در انتهای تابع test ، تابع main رو مثل تابع عادی فراخوانی کن :
main ();

Ananas
دوشنبه 06 آذر 1391, 13:16 عصر
سلام.
باید همه عملیات ای رو که می خواید تکرار کنید داخل حلقه بگذارید. ویا ازش یک تابع بسازید و داخل main در یک حلقه اون رو فراخونی کنید. مثال :

iint main()
{
for (int i = 0; i < 10; i++)
{
//
//
//
}
return 0;
}

و یا :

void Fn(int count)
{
for (int i = 0; i < count; i++)
{
//
//
//
}
};

int main()
{
Fn(10);
return 0;
}

و یا :

void Fn()
{
//
//
//
};

int main()
{
for (int i = 0; i < 10; i++)
{
Fn(10);
}
return 0;
}

one hacker alone
دوشنبه 06 آذر 1391, 20:25 عصر
دوستان پاسخ های خوبی دادن
من هم یک روش دیگه برای شما معرفی میکنم که توصیه میشه برای خوانایی برنامه از این استفاده نشه البته این توصیه برای کدهای چند هزار خطی هست

اون هم استفاده از goto هست

main()
:start
.
.
.
.
goto start

مسعود اقدسی فام
دوشنبه 06 آذر 1391, 20:55 عصر
دوستان پاسخ های خوبی دادن
من هم یک روش دیگه برای شما معرفی میکنم که توصیه میشه برای خوانایی برنامه از این استفاده نشه البته این توصیه برای کدهای چند هزار خطی هست

اون هم استفاده از goto هست

main()
:start
.
.
.
.
goto start

استفاده از goto نه تنها در برنامه‌نویسی شی گرا که در برنامه‌نویسی ساخت یافته هم منسوخ اعلام شده و به شدت استفاده از اون نهی می‌شه. وقتی با حلقه‌ی تکرار اول و آخر بلاک کاملا مشخص می‌شه چه لزومی داره با یه دستور goto دنبال خطی بگردیم که همچین برچسبی داشته باشه و مسائلی از این دست؟ برای همین هم به قول شما بهتره استفاده نشه.

استفاده از goto فقط در شرایطی خاص که چاره‌ی دیگه‌ای وجود نداره مانعی نداره. وگرنه می‌شه از روش‌های مرسومی مثل حلقه استفاده کرد.

این پیوند رو هم بخونید و توضیحاتش رو:

http://msdn.microsoft.com/en-us/library/b34dt9cd%28v=vs.80%29.aspx