PDA

View Full Version : بیرون آمدن از حلقه بینهایت



yasamin-98
یک شنبه 19 آبان 1392, 19:01 عصر
یه حلقه بی نهایت while داریم.می خوایم کاربر هروقت سه تا 0 رو پشت سر هم وارد کرد.از حلقه بیرون بیایم.
اگه 3 تا 0 رو کاراکتر در نظر بگیریم و scanf بزنیم،واسه اینکار enter لازمه.
روشایی که به ذهنم رسید آرایه یا رشته هستن.ولی نمی تونم پیادشون کنم.
یا روش بهتری واسه این کار هست؟

elyas74
یک شنبه 19 آبان 1392, 20:42 عصر
یه حلقه بی نهایت while داریم.می خوایم کاربر هروقت سه تا 0 رو پشت سر هم وارد کرد.از حلقه بیرون بیایم.
اگه 3 تا 0 رو کاراکتر در نظر بگیریم و scanf بزنیم،واسه اینکار enter لازمه.
روشایی که به ذهنم رسید آرایه یا رشته هستن.ولی نمی تونم پیادشون کنم.
یا روش بهتری واسه این کار هست؟

چیزی رو که نوشتی میشه پیاده کرد و بستگی به نوع سوال میشه کار های دیگه ای هم کرد،اگه کدی رو که نوشتی بزاری میشه بهتر نظر داد

yasamin-98
یک شنبه 19 آبان 1392, 21:32 عصر
کد برای اینه که اول کامپیوتر یه عدد درنظر بگیره و کاربر حدس بزنه و بعدش کاربر در نظر بگیره و کامپیوتر حدس بزنه و این کار تا جایی ادامه پیدا کنه که کاربر سه تا 0 رو پشت سر هم وارد کنه.
فعلا فط نوشتم که اگه کاربر صفر وارد کرد،برنامه تموم شه.



#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

int main(){

int i,j,k=1,count1=0,count2=0,p=1000,m;
srand(0);
time_t t=time(NULL);
srand(t);
int n = rand()%1000;
int q=500;


while(k==1){

do
{
printf ("\nPlease enter the correct number :");
scanf("%d",&i);

if (i == n){
printf("You guessed correctly\n");
printf("Enter 0 to finish,another number to continue:");
scanf("%d",&m);
if(m==0){
printf("# of You'r wrong guess:%d\n",count1);
printf("# of Computer's wrong guess:%d\n",count2);
getch();
return 0;
}
else
k=1;
}

if (i<n)
{
printf ("No, Try a greater number.");
count1++;
continue;
}
else{
printf ("No, Try a less number.");
count1++;
}
} while (i!=n);

printf("Choose a Number\n");
printf("Type 0 for true guess\n");
printf("If Computer's guess is greater than you'r choice:Type -1\n");
printf("Else:Type 1\n");

do{


printf("%d\n",q);
scanf("%d",&j);

if(j==0){
printf("Enter 0 to finish,another number to continue:");
scanf("%d",&m);
if(m==0){
printf("# of You'r wrong guess:%d\n",count1);
printf("# of Computer's wrong guess:%d\n",count2);
getch();
return 0;
}
else
k=1;
}
if(j==-1){
p=q;
q=q/2;
q=((p+q)/2);
count2++;
}
if(j==1){
q=((p+q)/2);
count2++;
}
}while(j!=0);

}




getch();
return 0;
}

elyas74
یک شنبه 19 آبان 1392, 22:16 عصر
کد برای اینه که اول کامپیوتر یه عدد درنظر بگیره و کاربر حدس بزنه و بعدش کاربر در نظر بگیره و کامپیوتر حدس بزنه و این کار تا جایی ادامه پیدا کنه که کاربر سه تا 0 رو پشت سر هم وارد کنه.
فعلا فط نوشتم که اگه کاربر صفر وارد کرد،برنامه تموم شه.


میتونی یک شمارنده بزاری برای خروج مثلا با این شرط

int cntr = 0 , num ;
cin >> num ;
if ( num == 0 )
++cntr ;
else
cntr = 0 ;

if ( cntr == 3 )
break ;

اینجوری فقط در صورتی که 3 تا 0 پشت سر هم بیاد خارج میشه//البته من کد شما رو نخوندم و فقط چند تا متغیر فرضی دادم که منظورُ بفهمی