View Full Version : چک کردن اینکه ایا کاربر عدد وارد کرده یا نه
tanha_nabash
پنج شنبه 17 دی 1388, 19:59 عصر
من باید یکسری اطلاعات از کاربر بگیرم یکی از این اطلاعات از نو int است می خام وقتی
دستور cin>>shomare اجرا می شود چک بشه ایا کاربر عدد وارد کرده یا نه
چون بعد از این دستور دستور cout<<"..." است که اگر کاربر بجای عدد حرف وارد کند این دستور مدام چاپ می شود که من نمی خام اینطوری بشه
tdkhakpur
پنج شنبه 17 دی 1388, 21:38 عصر
خوب شما تعداد ورودی را مشخص کنید بعد ورودی را مقایسه کنید اگر عددی بود محاسبه انجام گیرد
int num=0;
char ch=0;
for( int i=0; i<12 && ch!=13; i++){
ch = getch();
if( ch >='0' && ch<='9'){
num = num*10 + (int)(ch-'0');
cout<<ch;
}
}
کدهای بالا زیربنایی برای ساخت editor هست که میتوانید ارتقا بدید.
mortezamsp
جمعه 18 دی 1388, 00:50 صبح
اگر با زبان c کارمیکنید از کتابخانه CTYPE یک سری توابع آماده برای تشخیص نوع داده ورودی وجود دارند :
#include<iostream.h>
#include<conio.h>
#include<ctype.h>
void main()
{
clrscr();
while( 1 )
{ int ch=getch();
if( isdigit(ch) ){cout<<"fff"; break; }
}
}
tanha_nabash
جمعه 18 دی 1388, 11:10 صبح
این کد منهc++ )
cout<<"shomare:"<<'\n';
//اگر اینجا کاربر بجای عدد حرف وارد کنه cin>>shomare;
//این دستور مدام اجرا میشه و من نمی خام اینطوری بشه(می خاهم حتما از نوع int باشه نمی خام رشته تعریف کنم و به عدد تبدیل کنم) cout<<"mozoeh ketab:"<<'\n';
cin>>mozoe;
cout<<" name ketab:"<<'\n';
cin>>name;
cout<<"nevisande:"<<'\n';
cin>>nevisande;
cout<<"ghymat:"<<'\n';
cin>>ghymat;
cout<<"tarikh kharid:"<<'\n';
cin>>tarikh;
qwerty11
جمعه 18 دی 1388, 15:40 عصر
این کار شما تقریباً غیر ممکنه ! مگه اینکه بتونین همه ی دکمه های کیبورد غیر از حروفش رو غیر فعال کنید که اینم نمیشه !
به نظر من این کاری که شما میخواین غیر ممکنه ! اما میتونی از کد زیر استفاده کنی که به نظر من خیلی میتونه قشنگ باشه ! ظاهراً اینجوریه که همه چی رو غیر از اعداد غیر فعال میکنه اما اینجوری نیست ...
int shomare=0,length=0;
while(1){
char c=getch();
int d=(int)c;
if((d==10 || d==13) && length!=0) break;
if('0'>c || c>'9') continue;
length++;
shomare=10*shomare+(c-'0');
cout<<c;
}
cout<<'\n';
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.