PDA

View Full Version : محدود کردن ورودی ها



mohammad6969
سه شنبه 10 مرداد 1391, 13:52 عصر
سلام من می خواستم برنامم فقط ورودی از نوع int دریافت کنه و اگه ورودی اعشاری یا کاراکتری یا.. بود ارور چاپ کنه و به شرط حلقه اضافه نشه ولی حلقه رو ادامه بده(نحوه ی استفاده از continue رو هم لطفا تو این برنامه توضیح بدین) یه اینجور برنامه ای به ذهنم رسید ولی خب نمیدونستم داخل اون if چی باید بذارم..میشه راهنماییم کنین (چون من تازه شروع به یاد گرفتن کردم و مبتدی هستم لطفا یکم با جزییات توضیح بدین که بفهمم :ناراحت: )
void main(){
int a,j=0;
while(j<5){
cin >> a;
if( )
j++;
else
cout<<"eshtebah ast";
}
_getch();
}

meisam12
سه شنبه 10 مرداد 1391, 17:57 عصر
سلام دوست عزیز
سورس برنامه ای که می خواستی را برات گذاشتم.
اما در مورد continue:


#include


"iostream"

#include


"conio.h"

 

char


* CIN()

{



int i=0;



char temp[6]={""};

clrscr();

cout<<

"Please enter number: ";



while(i<5)

{



char Key;

Key=getch();



if(Key==32 || Key==13)

{

cout<<

"\n";



return temp;

}

temp[i]=Key;

cout<<Key;

i++;

}

cout<<

"\n";



return temp;

}

bool


isNumber(char *str)

{



while(*str)

{



char s=*str;



switch((int)*str)

{



case '0':



case '1':



case '2':



case '3':



case '4':



case '5':



case '6':



case '7':



case '8':



case '9':

{



break;

}



default:

{



return false;

}

}

str++;

}



return true;

}

void


main()

{



char str[5];



while(true){

strcpy(str,CIN());



if(isNumber(str))

cout<<str;



else

cout<<

"number entered is wrong";

getch();}

}



این دستور زمانی کاربرد دارد که در حلقه for قرار دارد. و در واقع با استفاده از این دستور از بقیه دستورات صرفه نظر می کند و به شمارنده بعدی را اجرا می کند. مثلاً

int value =0;
for (index=0 ;index < 10;index++ )
{
if (index==4 || index==5)
continue;
value += numbers[index];
}
printf("Value = %i",value) ;

mohammad6969
سه شنبه 10 مرداد 1391, 22:05 عصر
ممنون دوست عزیز قسمت continue رو کاملا متوجه شدم ولی منطق این سورس کدی که نوشتی رو درک نکردم..میشه یکم درموردش توضیح بدی




#include


"iostream"

#include


"conio.h"

 

char


* CIN()

{



int i=0;



char temp[6]={""};

clrscr();

cout<<

"Please enter number: ";



while(i<5)

{



char Key;

Key=getch();



if(Key==32 || Key==13)

{

cout<<

"\n";



return temp;

}

temp[i]=Key;

cout<<Key;

i++;

}

cout<<

"\n";



return temp;

}

bool


isNumber(char *str)

{



while(*str)

{



char s=*str;



switch((int)*str)

{



case '0':



case '1':



case '2':



case '3':



case '4':



case '5':



case '6':



case '7':



case '8':



case '9':

{



break;

}



default:

{



return false;

}

}

str++;

}



return true;

}

void


main()

{



char str[5];



while(true){

strcpy(str,CIN());



if(isNumber(str))

cout<<str;



else

cout<<

"number entered is wrong";

getch();}

}

meisam12
سه شنبه 10 مرداد 1391, 22:59 عصر
سلام
این برنامه از دو تابع CIN که جهت گرفتن فقط 5 کاراکتر می باشد و تابع دیگر isNumber مشخص میکند که اگر کاراکتر غیر عددی(حتی یک کارکتر باشد) داشته باشد مقدار 0 را برمی گرداند و اگر عدد تشخیص داده شود مقدار 1 را برگشت می دهد و در تابع main اگر 1 باشد عدد را چاپ می کند و اگر 0 باشد پیغام number entered is wrong را نمایش می دهد.

mohammad6969
چهارشنبه 11 مرداد 1391, 01:36 صبح
ایول دمت گرم...خیلی ممنون واقعا کمک کردی :تشویق: