ko làm trực tiếp với biến a được vì scanf("%d",&a) sẽ xem xét phần bạn nhập vào.
Vd nếu bạn nhập vào 12.4 thì a=12, nhập vào abc1234 thì giá trị của a ko thay đổi.
cho nên nếu muốn kiểm tra bạn phải dùng chuỗi để lưu stdin rồi kiểm tra chuỗi đó ...
Cho mình hỏi là làm thế nào để khi mình nhập vào giá trị khác giá trị mà mình đã gán thì nó bắt nhập lại.
Ví dụ như
printf(" The first integer number a:");
scanf("%d",&a);
Nếu như nhập a khác số nguyên thì nó bắt nhập lại
Nothing is impossible.
ko làm trực tiếp với biến a được vì scanf("%d",&a) sẽ xem xét phần bạn nhập vào.
Vd nếu bạn nhập vào 12.4 thì a=12, nhập vào abc1234 thì giá trị của a ko thay đổi.
cho nên nếu muốn kiểm tra bạn phải dùng chuỗi để lưu stdin rồi kiểm tra chuỗi đó ...
code ra gió bão
Please cho mình đoạn code :( mình mới học mà.
Nothing is impossible.
thế là đượcCode:int A; while(điều kiện của số được nhập) { cout<<"NHAP SO A:"; cin>>A; }
Cái khó là điều kiện như thế nào :( vì số nhập vào bắt buộc là số nguyên. Mà lỡ may nhập vào là bảng chữ cái thì làm sao mà làm được điều kiện :(
Nothing is impossible.
Vấn đề của bạn đặt ra khá hay, cách đây không lâu khi search mạng mình cũng đã đọc được một cái blog viết về vấn đề này, giờ phải bới mãi mới tìm lại được để post lên cho mọi người:
Một đoạn code trong đó, thoả mãn nhu cầu của bạn: (nhưng viết bằng C++)
Link gốc: http://blog.360.yahoo.com/blog-EKJyj...gQ--?cq=1&p=27Code:#include <iostream> using namespace std; int main() { int x; while (!(cin >> x)) { cin.clear(); cin.ignore (80, '\n'); cout << "Error " << endl; cout << "Try again: "; } cout << x; return 0; }
Mọi người cùng bàn luận để hiểu sâu vấn đề này hơn nhé!
Demo của QuangHoang vẫn chưa hoàn toàn chính xác, ví dụ nhập double nó bị ép kiểu sang int.
Vào box hướng dẫn C++ có 1 bài hoàn chính về đề tài này! Trong C thì cậu thử ví dụ sau xem sao :
C Code:
#include <cstdio> #include <cstdlib> int main() { char input[ 77 ]; int number; char* validate; bool flag = 0; while( flag == 0 ) { if( *validate != '\0') { } else { flag = true; } } return 0; }
Đã được chỉnh sửa lần cuối bởi rox_rook : 15-09-2008 lúc 06:54 AM.
wow 2 dòng này của anh RR quả là ăn tiền
Code:scanf( "%s", input ) ; number = strtol( input, &validate, 10 );
code ra gió bão