PDA

View Full Version : تابع گرفتن عدد از کاربر



Arash m
یک شنبه 16 تیر 1387, 00:27 صبح
سلام.
تابعی نوشتم که یه عدد از کاربر میگیره اما با یکم امکانات.

تابه:


#include<math.h>
#include<conio.h>

double get_num(char msg[],int pass_val,double max){
double rtn;
int max_len=0,c_str=0,val_a=0;
char ch,*str_num;
do{
max_len++;
}while(max/pow(10,max_len)>=1);
str_num=new char[max_len+1];
cprintf("%s",msg);
do{
ch=getch();
if(ch==8&&c_str>0){
cprintf("\b \b");
c_str--;
if(*(str_num+c_str)=='.')
val_a=0;
}
else if(((ch>='0'&&ch<='9')||(val_a==0&&ch=='.')||(c_str==0&&(ch=='-'||ch=='+')))){
if(ch=='.')
val_a=1;
*(str_num+c_str)=ch;
c_str++;
*(str_num+c_str)='\0';
if((atof(str_num)>max)){
c_str--;
*(str_num+c_str)='\0';
}
else{
if(pass_val)
putch('*');
else
putch(ch);
}
}
}while((ch!=13)||(c_str==0));
cprintf("\n");
gotoxy(1,wherey());
rtn=atof(str_num);
delete []str_num;
return rtn;
}توضیح تابع :

در هنگام استفاده از این تابع کاربر نمیتونه به غیر از عدد چیزی وارد کنه

الگوی تابع:


return get_num(massage,password,max)توضیح:

return :

این مقدار برگشتی تابع که عدد وارد شده توسط کاربر است.

massage :

این مقدار ورودی که از نوع رشته است متنی که قبل از ورود عدد نمایش داده میشود.

password :

این مقدار ورودی از نوع int هست.اگر مقدار این ورودی 0 باشه عدد به صورت معمولی گرفته میشه و اگر 1 باشه عدد به صورت کلمه عبور گرفته میشه یعنی به جای عدد ها، کاراکتر * چاپ میشه.این گزینه برای گرفتن کلمه عبور کاربرد داره.

max :

این مقدار ورودی از نوع double هست. مقدار این گزینه برابر با حد اکثر مقدار ورودی عدد است.یعنی مثلاً اگر شما این ورودی رو 12 بزنین کاربر نمیتونه از عدد 12 بیشتر وارد کنه.