30/09/2018, 23:32
Xin hỏi về vòng lặp do-while trong C++
Mọi người cho mình hỏi khi ta muốn giới hạn người dùng buộc phải chọn những thứ ta đã lập trình ra như ví dụ:
nhập vào 1 số nguyên lớn hơn 0 và nhỏ hơn 5 thì em dùng code:
int n;
do
{
cout<<"
Nhap vao 1 so nguyen 0<n<5,n= ";
cin>>n;
}while(n<1||n>5);
code trên chỉ đúng khi em nhập n là 1 số nguyên,khi em nhập chữ hay kí tự thì vòng do while này lặp không giới hạn,vậy mọi người em phải làm sao để xử lý việc này?
Em xin chân thành cảm ơn
Bài liên quan
Dùng string rồi check từng kí tự thử xem bạn.
có cách nào buộc người dùng phải nhập vào số nguyên không bạn nhỉ???(hàm nhập cin)
Thì nhập xong thì kiểm tra, nếu là số nguyên thì chạy, còn không là số nguyên thì bắt nhập lại bạn ơi
Bạn có thể thử làm như thế này: sử dụng vòng lặp vô hạn, đặt điều kiện dừng (n>0 && n<6) và trong vòng lặp, nếu điều kiện thỏa mãn thì sử dụng hàm break() để kết thúc.
n > 0 && n < 5 thì ngược lại là:
n < 1 || n >= 5
Khai báo số nguyên thì nhập đc số nguyên thôi bạn à, mình hay dùng cách này để check:
Bạn khai báo 1 mảng kí tự, index = 0, rồi dùng hàm get() lấy từng kí tự vào mảng, nếu là số thì tăng index rồi cho nhập tiếp, nếu là Enter thì break, nếu khác hai cái trên(kí tự) thì đưa giá trị index về 0 xem thế nào
Sử dụng cin.fail() cũng được.
Chố
cin.fail()
có thể thay bằng!cin.good()
cũng đượcMình k biết code ý chứ ý tưởng thì có r
Bọn mình chưa được học hàm này k boết thầy cho ad k nữa
K được dùng get bạn à chỉ dk cin cơ bản thui
Cái này khả thi r ok cảm ơn bạn nha,vẫn mong còn cách hay hơn
Thay vì get bạn hoàn toàn có thể cin từng phần tử của chuỗi mà