سلاما این برنامرو که ران میکنم فقطoddو evenرو چاپ میکنه و عملیات بعدش انجام نمیشه کسی میدونه چرا؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

سلاما این برنامرو که ران میکنم فقطoddو evenرو چاپ میکنه و عملیات بعدش انجام نمیشه کسی میدونه چرا؟

0 امتیاز
#include <iostream>

using namespace std;

int main()
{
    int i,m,temp=0;
    int a[300];
    cout<<"enter a num\n";
    cin>>m;
    if(m%2==0){
            cout<<"even number";

            do{
                    temp=m;
                    temp=temp-2;
            }
            while(temp<=m);

        for(i=0;i<=m;i++){
         m=a[i];
        cout<<a[i];
      }

    }
   else if(m%2!=0){
        cout<<"Odd numbere";
        m=m-1;
         do{
                temp=m;
                temp=temp-2;
            }
            while(temp<=m);
            for(i=0;i<=m;i++){
        m=a[i];
        cout<<a[i];
        }
        }

    return 0;
}

 

سوال شده تیر 29, 1399  بوسیله ی yasi (امتیاز 28)   1 4 6

1 پاسخ

+1 امتیاز
 
بهترین پاسخ
سلام.دوست عزیز علت این هست که حلقه do while افتاده توی لوپ بی نهایت (در هر دو حالت زوج و فرد).مثلا اگه m رو 10 بدید ، توی حلقه مقدار temp میشه 10(خط اول).تو خط بعدی temp میشه 8 و m هنوز 10 هست. شرط while هم که میشه true.توی دور بعد و دورهای بعدی حلقه هم همین اتفاق تکرار میشه.یعنی temp ،اول میشه 10 بعد میشه 8 وشرط همیشه true میمونه.اگه یه string یا مقدار m و temp رو خط آخر حلقه cout کنید،می تونید لوپ بی نهایت رو توی خروجی ببینید.
پاسخ داده شده تیر 30, 1399 بوسیله ی ik (امتیاز 571)   1 2 8
انتخاب شد تیر 31, 1399 بوسیله ی yasi
چطوری میشه این مشکل و حل کرد؟ممنون از پاسختون
سلام.لطفا صورت مساله و اینکه کد باید چه بکنه رو به طور دقیق بفرمایید.چون توی این کدی که گذاشتید،اشکالات منطقی دیگه ای هم وجود داره و نمیشه هدف برنامه رو متوجه شد.در واقع به نظرم هدف برنامه درست پیاده سازی نشده.
به طور مثال چاپ کردن عناصر آرایه a در حالی که a بعد از تعریف،هیچ جا مقداردهی نشده و مقدارهمه عناصرش 0 هستند. و ...
برنامه ای که یک عدد از ورودی گرفته و تمام عدد زوج قبل از اون رو چاپ کنه
سلام.صورت سوال که خیلی ساده هست.با یه for میشه انجامش داد.نیازی به استفاده از do while و پیچیده کردن کد نمی بینم.
منطق کد رو براتون می ذارم :
int n;
cout<<"Enter a number :";
cin>>n;

  for(int i=1;i<n;i++)
  {
    if(i%2==0)
    {
      cout<<i<<"\t";
    }
  }
...