#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ạn xem code mình lỗi ở đâu với.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?