در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

سیدرضا بازیار

سوال پایانترم برنامه نویسی پیشرفته پیام نور (تکرار حلقه)

توی امتحان پایانترم پیام نور یه کد زیر رو نوشته

سوال: این حلقه چند بار اجرا میشود و در نهایت مقدار z چند خواهد بود؟

int z=0;
while (z<5)
{
        if(z>3) break;
        z++;
}

جواب: z=4 و پنج بار

حالا مشکل من:

جواب بدون شک میشه ۴

اما حلقه اول چون هیچ وقت از پنج بزرگتر نمیشه پس بی نهایت اجرا میشه و حلقه دوم هم چهار بار

من اشتباه میکنم یا برگه؟

این سوال 2 پاسخ دارد.
#سوال_برنامه_نویسی #برنامه_نویسی_پیشرفته
لذت یادگیری با توسینسو
به عنوان شخصی که مدت هاست از سایت توسینسو استفاده می کنم باید بگم که واقعاً یکی از بهترین مرجع ها برای ارتقاء دانش شخصی هست. دوره های سایت، راهکارها و مطالب، همگی عالی هستند.
حسین احمدی

سلام رضای عزیز، به نظرم شما اشتباه کد رو متوجه شدی، قسمت if در صورتی که مقدار z بزرگتر از 3 بشه دستور break اجرا میشه، یعنی از حلقه کلاً خارج میشه، ولی دستور ++z جزو شرط if نیست، پس با هر بار تکرار حلقه while دستور ++z اجرا میشه و وقتی مقدار z برابر 4 شد، یعنی بزرگتر از 3 از حلقه خارج میشه. مشکلی وجود نداره تو. فکر کنم اون break به خاطر اینکه جلوی if نوشته شده شما رو به اشتباه انداخته.

لطفاً سوال خود را در انجمن مطرح کنید، به سوالات در پیام خصوصی پاسخ داده نخواهد شد
  • انتخاب شده به عنوان جواب توسط 1 نفر

در کد زیر چه اتفاقی افتاده؟

int a=0;
for (i=0;i<5;i++)
for (j=0;j<5;j++)
a++;
a--;

cout << a;

جوابش شده ۲۴ اما هر چی فکر میکنم متوجه نمیشم چی شده؟

حسین احمدی

شما اول کد بالا به را رو به صورت باز نویسی کن:

int a = 0, i = 0, j = 0;
for(i = 0; i < 5; i++)
{
    for(j = 0; j<5;j++)
    {
        a++;
    }
}
a--;
cout << a;

اینجا چیزی که شخص رو به اشتباه می اندازه scope های مربوط به حلقه ها هست، دستور ++a در حقیقت 25 بار اجرا میشه، یعنی 25 بار 1 مقدار به a اضافه میشه، که بعد اتمام حلقه ها مقدار a برابر 25 خواهد بود، بعد دستور --a یک مقدار از a کم کرده و خروجی مقدار 24 چاپ میشه.

لطفاً سوال خود را در انجمن مطرح کنید، به سوالات در پیام خصوصی پاسخ داده نخواهد شد
  • انتخاب شده به عنوان جواب توسط 1 نفر

دوست عزیز توجه داشته باش که یک خط بعدی که بعد از if یا for می آید زیرمجموعه آن محسوب می شود. در کد بالا for دوم زیر مجموعه for اول است و a++ هم زیر مجموعه for دوم است. بنابراین for اول 5 بار اجرا می شود و در هر بار اجرا for دوم 5 بار اجرا می شود بنابر این a++ تعداد 25 بار اجرا می شود که بعد از اجرای این حلقه ها یک بار از مقدار a با کد a-- کم می شود. بنابراین جواب 24 است در اصل این کد باید به شکل زیر باشد.

int a=0;
for (i=0;i<5;i++)
       for (j=0;j<5;j++)
            a++;
a--;
 
cout << a;
سرنوشت ما با افکارمان تغییر می کند؛ اگر افکارمان همیشه مطابق با خواسته هایمان باشند، همان چیزی می شویم که آرزو داریم و همان کاری را می کنیم که می خواهیم
پاسخ شما
برای ارسال پاسخ خود وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....