Bạn sử dụng vòng lặp do while
PHP Code:int so;
do
{
cout<<"Nhap vao so: ";
cin>> so;
}while(so > 9 || so < 0);
Các bác cho em hỏi cách kiểm soát phím nhập vào 1 biến.
VD: khai báo 1 biến:
int so;
làm thế nào khi nhập chỉ cho phép người ta nhập các phím 0123456789 còn các phím khác ko được nhập.
thanks!
Bạn sử dụng vòng lặp do while
PHP Code:int so;
do
{
cout<<"Nhap vao so: ";
cin>> so;
}while(so > 9 || so < 0);
Đã được chỉnh sửa lần cuối bởi iamvtn : 19-05-2007 lúc 12:19 AM. Lý do: Bổ sung
Thanks! nhưng chưa ổn bạn à.
Nếu dùng đoạn code trên thì khi bấm 1 ký tự khác ngoài số 0->9 sẽ bị cho vào vòng lặp vô hạn lệnh:
cout<<"Nhap vao so: ";
còn lệnh cin>>số nó dường như bỏ qua không cho nhập lại.
Tui cũng thử 1 cách sau:
Nhưng nó vẫn chưa ổn vì khi chuyển xâu sang kiểu int nó là 1 giá trị khác với giá trị mình nhập vào.Code:int so,test; char x[5]; while(1) { cout<<"\nNhap so: "; fflush(stdin); gets(x); for(int i=0;i<strlen(x);i++) if(x[i]=='0'||x[i]=='1'||x[i]=='2'||x[i]=='3' ||x[i]=='4'||x[i]=='5'||x[i]=='6'||x[i]=='7' ||x[i]=='8'||x[i]=='9') { test=1; } else { test=0; break; } if(test==1) break; } so=int(x);
Tớ có một bài về Menu thế này. Nó không cho nhập những số > 4 và < 0.
Nhưng tớ ko thể sửa cho nó lên từ 0 -> 9 được vì nó bắt phím trực tiếp 1 con số luôn.
PHP Code:#include <stdio.h>
#include <conio.h>
#include <math.h>
int menu()
{
int c;
printf("\n----- Menu -----");
printf("\n1. Hinh tam giac");
printf("\n2. Hinh tron");
printf("\n3. Hinh vuong");
printf("\n4. Hinh chu nhat");
printf("\n0. Thoat");
printf("\n----------------");
printf("\nChon muc : ");
do {
c = getch();
} while (c>'4' || c<'0');
putc(c, stdout);
return c -'0';
}
void hinhtamgiac()
{
int a, b, c;
float p;
printf("\n\nNhap vao ba canh tam giac : ");
scanf("%d%d%d", &a, &b, &c);
printf("\nChu vi tam giac = %d", a+b+c);
p = (float)(a + b + c)/2;
printf("\nDien tich tam giac = %lf", sqrt(p*(p-a)*(p-b)*(p-c)));
getch();
}
void hinhtron()
{
int r;
printf("\n\nNhap vao ban kinh hinh tron : ");
scanf("%d", &r);
printf("\nChu vi hinh tron = %f", 2 * M_PI * r);
printf("\nDien tich hinh tron = %f", M_PI * r * r);
getch();
}
void hinhvuong()
{
int a;
printf("\n\nNhap vao canh hinh vuong : ");
scanf("%d", &a);
printf("\nChu vi hinh tron = %d", 4 * a);
printf("\nDien tich hinh vuong = %d", a * a);
getch();
}
void hinhchunhat()
{
int a, b;
printf("\n\nNhap vao cac canh hinh chu nhat : ");
scanf("%d%d", &a, &b);
printf("\nChu vi hinh chu nhat = %d", 2 * (a+b));
printf("\nDien tich hinh chu nhat = %d", b * a);
getch();
}
void main()
{
int chon;
do {
chon = menu();
switch(chon)
{
case 1 : hinhtamgiac();
break;
case 2 : hinhtron();
break;
case 3 : hinhvuong();
break;
case 4 : hinhchunhat();
break;
}
} while (chon != 0);
}
Dùng lệnh CASE thử xem.
switch(so);
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
break;
default:
printf("\n");
}
iamvtn ơi, trong bài menu của cậu thì chỉ có thể bấm duy nhất một phím.
Ý tớ muốn hỏi ở bài này là:
Giả sử có một biến đơn giá:
long dgia;
Tớ muốn nhập vào đơn giá đó là 15000 chẳng hạn. Bây giờ làm sao để kiểm soát người ta chỉ được nhập vào những con số.
ví dụ:
int s;
->cho nhập s
if(!s)
thông báo nhập sai và cho nhập lại.