30/09/2018, 16:10
Hỏi về Cấu trúc điều khiển(if else) và cấu trúc lặp (do while)
#include <iostream>
int main(){
int maso;
float doanhSo, luongCoBan, soGioLam, luongCongNhan, giaSanPham;
std::cout << "Tinh luong cong nhan theo loi nhuan." << std::endl;
std::cout << "Nhap doanh so(so hang ban ra trong tuan): ";
std::cin >> doanhSo;
std::cout << "Nhap gia tri doanh so(don gia 1 san pham): ";
std::cin >> giaSanPham;
do
{
do
{
if (0 <= doanhSo && 0 <= giaSanPham){
luongCongNhan = 500 + doanhSo * giaSanPham * .07;
std::cout << "Luong cong nhan la: " << luongCongNhan << std::endl;
}
else{
std::cout << "Nhap sai thong tin, nhap lai:" << std::endl;
}
} while (0 > doanhSo);
} while (0 > giaSanPham);
return 0;
}
#include <iostream>
int main(){
int maso;
float doanhSo, luongCoBan, soGioLam, luongCongNhan, giaSanPham;
std::cout << "Tinh luong cong nhan theo loi nhuan." << std::endl;
std::cout << "Nhap doanh so(so hang ban ra trong tuan): ";
std::cin >> doanhSo;
std::cout << "Nhap gia tri doanh so(don gia 1 san pham): "; std::
cin >> giaSanPham;
do
{
if (0 <= doanhSo && 0 <= giaSanPham){
luongCongNhan = 500 + doanhSo * giaSanPham * .07;
std::cout << "Luong cong nhan la: " << luongCongNhan << std::endl;
}
else{
std::cout << "Nhap sai thong tin, nhap lai:" << std::endl;
}
} while (0 > doanhSo || 0 > giaSanPham);
return 0;
}
Mình thấy 2 đoạn code trên đưa ra cùng 1 kết quả. Vậy cách mình sử dụng vòng lập do while như 2 đoạn code trên có chính xác không?
Tại sao khi mình nhập sai thông tin (doanhSo <0 hoặc giaSanPham < 0 hoặc cả doanhSo và giaSanPham đều < 0 ) thì vòng lặp cứ chạy mãi không ngừng?
Cái mình muốn là nhập sai thông tin thì nhập lại. Phải làm như thế nào các bạn chỉ giúp mình với.
Bài liên quan
Thứ nhất: cin của bản theo như mình nghĩ sau khi nhập thì nó phải nhập tiếp ở trong while thứ 1.
Thứ hai: chương trình lúc nào cũng bắt nhập đung, mà nhập đúng thì nó bắt nhập tiếp thì khi nào chương trình mới dừng @@
mình chưa hiểu ý bạn, nếu bạn nhập sai thông tin thì nó phải lặp lại cho đến bao giờ bạn nhập đúng thì thôi vậy là thỏa điều kiện " Cái mình muốn là nhập sai thông tin thì nhập lại" của bạn rồi còn gì. Hay ban muốn nhập sai cái nào thì nhập lại cái đó thôi, nếu vậy bạn dùng 2 vòng lặp
do...while
Bạn ơi bạn chạy thử code chưa? Cả 2 đoạn code mình viết ở trên:
std::cout << "Luong cong nhan la: " << luongCongNhan << std::endl;
Mình k hiểu tại sao lại như vậy.
Mình muốn khi nhập sai thì nhập lại! Chứ k phải cứ chạy mãi như trong hình.
Compile k cho mình nhập lại mà cứ chạy mãi như trong hình ở trên. Bạn xem code mình lỗi ở đâu với.
hi, bạn phải cho các dòng
vào trong vòng lặp chứ, thêm vào chỗ
do
ấy bạn. Với lại mình thấy hình như bnaj thừa 1 vòngdo
Mình sửa lại, bước đầu chạy thấy ổn
Uhm đúng rồi mình cũng vừa mới hiểu ra xong. Nếu để
Thì khi nhập sai giá trị. Các giá trị ấy sẽ được lưu lại bên trong vòng lặp nên nó chạy mãi không ngừng.
Mình cũng sửa lại như bạn nói và thành công luôn. Cảm ơn bạn nhiều nhé.