C++ Bài tập đơn giản nhưng không hiểu vì sao sai

#include <iostream>
using namespace std;

void main()
{
	int a, b, c, max;

	cout << "Nhap a ";
	cin >> a;
	cout << "Nhap b ";
	cin >> b;
	cout << "Nhap c ";
	cin >> c;

	max = a;
	if (max < b) {
		b = max;
	}
	if (max < c) {
		c = max;
	}

	cout << max;
	system("pause");
}

Đoạn code trên là phần code để giải bài tìm số lớn nhất trong 3 số. Nhưng không hiểu sao max lúc nào củng = a :frowning:

Thay lại bằng đoạn này thử nhé:

if (b > max)
        max = b;
if (c > max)
        max = c;

Vì sao phải bỏ {} ạ :frowning:
Em tưởng 1 câu lệnh củng nên bỏ trong cặp nhọn để dễ đọc code.

Cái đó không quan trọng vì trong if chỉ có 1 câu lệnh nên không cần {} , khi nào trong if có nhiều câu lệnh mới cần {}

P/S: Mà bạn sửa được chưa ?

Em đã thử và không đc ạ :frowning:

Thế này đi. Bạn thay đổi thuật toán xíu.
Gán cho max = 0 rồi thực hiện đoạn code dưới đây thử:

if (a > max)
       max = a;
if (b > max)
       max = b;
if (c > max)
       max = c;
...

Em làm như anh thì max = 0 :frowning: em chã hiểu luôn.

Em chạy trình debug thì max luôn có 1 kết quả duy nhất :frowning:

Sao kì nhỉ ? Mình làm ok hết mà?

int a,b,c;
	int max=0;

cout << "Nhap a ";
cin >> a;
cout << "Nhap b ";
cin >> b;
cout << "Nhap c ";
cin >> c;
if(max<a)
	{
	max=a;
	if(max<b) max=b;
	if(max<c) max=c;
	}
	cout << max;
}

code đây nà bạn vậy mới đúng

Của em đây ạ :frowning:

Nếu a, b, c < 0 thì thuật toán sai

Uhm anh :smiley: Nhưng em kêu bạn ấy chuyển qua thuật đó xem có lỗi như thuật trước không ấy mà :smiley:

@Looi nhầm, bạn ghi lại là max = a nha :slight_smile:

1 Like

Ồ em cảm ơn anh :smiley:
Sai lỗi vớ vẫn quá.

1 Like

Mà bạn nên nhớ thế này nha:
a = max tức là gán giá trị max cho a
max = a tức là gán giá trị a cho max

a = maxmax = a là 2 kiểu hoàn toàn khác nhau :slight_smile:
Tổng quan là vế phải gán cho vế trái

1 Like

max=a; hoặc bằng max = a; cũng như nhau thôi bạn

Thuật của bạn nếu cho a = 0 thì coi như sai :smiley:

mình có nói j đâu mình chỉ nói max=a cũng giống max = a mà

Bạn gán a = max và b = max để làm gì :smiley:

bạn có chắc không? :grinning:

mới sửa lại hả :smiley:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?