30/09/2018, 22:35

Cách dùng lệnh if ở đây sai chỗ nào

Mình có làm bài tập ở khóa học C++ cơ bản của bạn @nguyenchiemminhvu thì khi chạy thử thì mình cứ đoán số 0 ở trên console thì kết quả cho ra bị sai, code thì mình phân tích ra thấy đúng mà, ngồi cả tiếng đồng hồ ko nghĩ ra được giải pháp nào.

Bài tập đây:

1/ Viết chương trình sinh ra một số ngẫu nhiên trong khoảng từ 0 đến 100 nhưng không in ra màn hình. Yêu cầu người dùng đoán xem số ngẫu nhiên vừa sinh ra lớn hơn 50 hay bé hơn 50, nếu chọn trường hợp bé hơn 50 nhập giá trị 0, ngược lại nhập giá trị 1. In kết quả thông báo người dùng đã đoán đúng hay sai ra màn hình.

Ví dụ:

A random number was generated
Guess: 1

Wrong! The random number is 26 (26 < 50)

Code:

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()	{
	
	srand(time(NULL));
	int value_in = rand() % 100 + 1;
	int value_out;	

	cout << "This is a software of random.org, plese guess the number (1 or 0)" << endl;
	cout << "Guess: ";
	cin >> value_out;

	if (value_out = 0 && value_in < 50)
	{
		cout << "Right! The random number is " << value_in << endl;
	}

	else if (value_out = 0 && value_in > 50)
	{
		cout << "Wrong, the random number is " << value_in << endl;
	}

	else if (value_out = 1 && value_in > 50)
	{
		cout << "Right! The random number is " << value_in << endl;
	}

	else if (value_out = 1 && value_in < 50)
	{
		cout << "Wrong, the random number is " << value_in << endl;
	}
	
	system("pause");
	return 0;
}
... viết 00:46 ngày 01/10/2018

if (value_out = 0 && value_in < 50)

if (value_out == 0 ....
Hiệu viết 00:47 ngày 01/10/2018

Mình thử thấy tốt rồi. Thanks bạn

Người bí ẩn viết 00:49 ngày 01/10/2018

if (value_out = 0 && value_in < 50)

Ủa trong python không có khái niệm này hả @Nguyen_Hieu2 sao để mỗi 1 dấu " = " vậy

Hiệu viết 00:41 ngày 01/10/2018

Có đấy, mỗi tội quên thôi
À mà tại sao vẫn dùng dc “=” trong câu lệnh if nhỉ, tại vì ở Python dùng = ở lệnh if là bị lỗi invaid syntax ngay

Chế Tiệp Chân Khoa viết 00:46 ngày 01/10/2018

python dùng strict rule để hạn chế những lỗi lặt vặt như này
lệnh gán trong python là 1 statement, không phải expression nên không thể đưa vào vị trí của expression (vd trong if hay for)
còn C/C++ lệnh gán vẫn là expression, và luôn trả về true

Người bí ẩn viết 00:43 ngày 01/10/2018

Mà hình như Python “cao” hơn C++ xíu nhề

À mà tại sao vẫn dùng dc “=” trong câu lệnh if nhỉ

Ví dụ ?

... viết 00:36 ngày 01/10/2018

còn C/C++ lệnh gán vẫn là expression, và luôn trả về true

#include <iostream>
using namespace std;

int main() {

	int n = 5;
	if(n = 0)
	{
		cout << "True?" << endl;
	}
	else
	{
		cout << "False!" << endl;
	}
	return 0;
}

Nó đơn giản là lấy cái giá trị được gán xong để đem đi so sánh thôi.

Bài liên quan
0