30/09/2018, 21:15

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

Người bí ẩn viết 23:24 ngày 30/09/2018
if (max < b) {
	b = max;
}
if (max < c) {
	c = max;

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

if (b > max)
        max = b;
if (c > max)
        max = c;
Thiên Lâm viết 23:18 ngày 30/09/2018

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

Người bí ẩn viết 23:24 ngày 30/09/2018

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 ?

Thiên Lâm viết 23:16 ngày 30/09/2018
if (max < b) {
	b = max;
}
if (max < c) {
	c = max;

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

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

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

Người bí ẩn viết 23:20 ngày 30/09/2018

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;
...
Thiên Lâm viết 23:18 ngày 30/09/2018

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

Thiên Lâm viết 23:30 ngày 30/09/2018

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

Người bí ẩn viết 23:29 ngày 30/09/2018

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

tuong lam viết 23:25 ngày 30/09/2018
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

Thiên Lâm viết 23:18 ngày 30/09/2018

Của em đây ạ

Gió viết 23:22 ngày 30/09/2018

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

Người bí ẩn viết 23:28 ngày 30/09/2018

Uhm anh 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à

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

Thiên Lâm viết 23:23 ngày 30/09/2018

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

Người bí ẩn viết 23:25 ngày 30/09/2018

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
Tổng quan là vế phải gán cho vế trái

tuong lam viết 23:29 ngày 30/09/2018

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

Người bí ẩn viết 23:27 ngày 30/09/2018

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

tuong lam viết 23:19 ngày 30/09/2018

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

Trần Ngọc Khoa viết 23:25 ngày 30/09/2018

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

Trần Ngọc Khoa viết 23:16 ngày 30/09/2018

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

mới sửa lại hả

tuong lam viết 23:21 ngày 30/09/2018

chắc chứ bạn vì mình thử rồi

Bài liên quan
0