اجرا نشدن شرط و افتادن درحلقه - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

اجرا نشدن شرط و افتادن درحلقه

0 امتیاز

چرا شرط سوم با وارد کردن دو عدد دو و صفر اجرا نشدن و حلقه تا اخرین حد ممکن اجرا میشود؟؟؟

a=0

z=2

#include <stdio.h>
#include <stdlib.h>
int x=0,y=0;
int m=0,n=0;
int a,z;
int main()
{

scanf("%d",&a);
scanf("%d",&z);

while(a!=5001 && z!=5001 && m<5001 && n<5001){
x=m;
y=n;
printf("m=%d n=%d\n",m,n);
if(x==a && y==z){
printf("x=%d y=%d",x,y);
break;
}
x+=1;
y+=1;
if(x==a && y==z){
printf("x=%d y=%d",x,y);
break;
}
////////////////////////////////////////
  شرط سوم وافتادن در حلقه بینهایت
////////////////////////////////////////
x+=2;
y+=0;
if(x==a && y==z){
printf("x=%d y=%d",x,y);
break;
}
///////////////////////////////////////
x+=3;
y+=1;
if(x==a && y==z){
printf("x=%d y=%d",x,y);
break;
}
m+=2;
n+=2;
}
return 0;
}

 

سوال شده فروردین 9, 1399  بوسیله ی takavar (امتیاز 60)   4 8 18

1 پاسخ

+1 امتیاز

شرط شما and هست نه or  بنابراین نمی تونه همزمان شرط برآورده کنه در نتیجه تا آخر حلقه میره مثلا در اولین دور در قسمت شرط مورد نظر شما x و y به ترتیب 3 و 1 میشه که کاملا واضح هست که هیچ کدام را برآورده نمی کنه. کد رو به شکل زیر اجرا کن بیشتر متوجه میشه

#include <stdio.h>
#include <stdlib.h>
int x=0,y=0;
int m=0,n=0;
int a,z;
int main()
{
 
  scanf("%d",&a);
  scanf("%d",&z);
 
  while(a!=5001 && z!=5001 && m<5001 && n<5001)
  {
    x=m;
    y=n;
    printf("\nm=%d n=%d\n",m,n);
    if(x==a && y==z)
    {
      printf("x=%d y=%d",x,y);
      break;
    }
    x+=1;
    y+=1;
    printf("x=%d y=%d",x,y);
    if(x==a && y==z)
    {
      printf("##################");
      printf("x=%d y=%d",x,y);
      break;
    }
    /////////////////////////////////////////
    x+=2;
    y+=0;
    printf("x=%d y=%d",x,y);
    if(x==a && y==z)
    {
      printf("*****************");
      printf("x=%d y=%d",x,y);
      break;
    }
    ///////////////////////////////////////
    x+=3;
    y+=1;
    printf("x=%d y=%d",x,y);
    if(x==a && y==z)
    {
      printf("=================");
      printf("x=%d y=%d",x,y);
      break;
    }
    m+=2;
    n+=2;
  }
  return 0;
}

 

پاسخ داده شده فروردین 9, 1399 بوسیله ی pilapila (امتیاز 232)   14 43 56
سلام فراقی نداره وقتی شرطorمیکنیم
ورودی 3 و 1 هم براورده میشه!
فقط توشرط سوم مشکل هست
مثلا تو دوره اول 2 و0
دور دوم4 و2
دورسوم 6 و 4
دور چهارم 8 و6
الان مهم نیست که چه اتفاقی برای مقادیری که جز شرط نیستن میفته
وقتی مقادیر اصلی توی شرط ها میاد باید کار کنه ولی توشرط سوم فقط این اتفاق نمی افته
...