Cần hướng dẫn về code tìm phần tử lớn nhất trong mảng 2 chiều

truy xuất phần tử lớn nhất của mảng. Cho mình hỏi tại sao nếu điều kiện if như bên dưới thì bị sai số ạ? (đáp án đúng nếu điều kiện if(max < arr[i][j]))

for(int i = 0;i < n;i++)
{
		int max = arr[i][0];
		for(int j = 0; j < m;j++){
			if(arr[i][0] < arr[i][j]){
				max = arr[i][j];
			}
		}
		cout << "phan tu lon nhat la "<< max
		 << endl;
	}

Nhìn vô thấy khai báo int max = arr[i][0] bên trong vòng lặp thì có vẻ là bạn đang đi quá nhanh, khai báo 1 lần và dùng lại chứ ở đây mỗi lần lặp bạn lại khai báo lại?

Code trên mình đã thử viết luôn xem có nhớ bài hem :smiley:

2 Likes

bạn hãy giải thích code của bạn đi, code của bạn gồm các bước gì?

mình tạo vòng lặp lồng nhau để truy xuất dữ liệu của mảng 2 chiều arr[i][j]
gán max cho chỉ số arr[i][0]
sau đó chạy vòng lặp với điều kiện if như trên để xuất phần tử lớn nhất của mỗi hàng
đây là đoạn code đầy đủ của mình
và cho mình hỏi sao điều kiện if của x gây ra sai số ạ?
(vd mảng 2 chiều

 arr[2][3] = {
        {1,2,3},
        {4,6,5}
    };

lúc xuất sẽ cho đáp án max của mỗi hàng là 3 và 5)

#include <iostream>

int main(){
	int n,m,arr[20][20];
	
	std::cout << "n = ";
	std::cin >> n;
	
	std::cout << "m = ";
	std::cin >> m;
	
	//nhap mang 2 chieu
	
	for( int i = 0;i < n ;i++){
		for(int j = 0;j < m;j++){
			std::cout << "arr [" << i << "]["<<j<<"] = ";
			std::cin >> arr[i][j];
		}
	}
	
	//in mang ra console
	
		for( int i = 0;i < n ;i++){
		for(int j = 0;j < m;j++){
		std::cout << arr[i][j] << " ";
		}
		std::cout << "\n";
	} 
	
	//tim gia tri lon nhat cua cac hang trong mang 2 chieu
	std::cout << "gia tri lon cua cac hang la: ";
	for(int i = 0; i < n; i++){
			int max = arr[i][0];
		for(int j = 0;j < m;j++){
			if(arr[i][0] < arr[i][j]){
				max = arr[i][j];
			}
		}
		std::cout << max << " ";
	}
	return 0;
}

P/s: Phần giải thích của mình có gì sai sót mong bạn góp ý. Mình đa tạ :smiley:

cám ơn góp ý của bạn nhé, mình đang rất cần góp ý này ạ. cho mình hỏi thêm là thay vì sử dụng điều kiện if như của bạn mà mình dùng if(arr[i][0] < arr[i][j]) ( trước đó mình đã gán phần tử arr[i][0] cho max) thì vẫn xảy ra sai số.
(vd mảng 2 chiều
arr[2][3] = {
{1,2,3},
{4,6,5}
};
lúc xuất sẽ cho đáp án max của mỗi hàng là 3 và 5)

image
câu if này của bạn, có ý nghĩa gì?

1 Like

mình hiểu rồi, cám ơn bạn đã thông não giúp.

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