Tìm min/max ma trận, theo hàng, cột C++

Ông bạn học liên thông, nhờ làm hộ @@.

#include <iostream>
#include <cstdlib> // for srand() and rand()
#include <ctime> // for time()
using namespace std;

// định nghĩa số phần tử mảng
#define ROW 100
#define COL 100

// khai báo prototype
void nhapMang(int mt[][COL], int &m, int &n);
void xuatMang(int mt[][COL], int m, int n);
int timMax(int mt[][COL], int m, int n, int &im, int &jm);
int timMin(int mt[][COL], int m, int n, int &im, int &jm);
void timMinMaxTheoHang(int mt[][COL], int m, int n);
void timMinMaxTheoCot(int mt[][COL], int m, int n);

int main()
{
	int mt[ROW][COL]; // mảng myArray có MAX phần tử
	int nRow, nCol; // số phần tử dòng và cột được sử dụng

	// nhập xuất mảng tự động
	nhapMang(mt, nRow, nCol);
	xuatMang(mt, nRow, nCol);

	// tìm max 
	int imax = 0, jmax = 0;
	int max = timMax(mt, nRow, nCol, imax, jmax);
	cout << "Max = " << max << " tai: [" << imax << "][" << jmax << "]"<< endl;
	
	int imin = 0, jmin = 0;
	int min = timMin(mt, nRow, nCol, imin, jmin);
	cout << "Min = " << min << " tai: [" << imin << "][" << jmin << "]"<< endl;

    timMinMaxTheoHang(mt, nRow, nCol);
    timMinMaxTheoCot(mt, nRow, nCol);
	return 0;
}

// hàm nhập mảng
void nhapMang(int mt[][COL], int &m, int &n)
{
	// khởi tạo số ngẫu nhiên
	srand(time(NULL));

	cout << "Nhap so dong : ";
	cin >> m;
	cout << "Nhap so cot : ";
	cin >> n;

	// khởi tạo mảng ngẫu nhiên từ [0][0] đến [m-1][n-1].
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < n; j++)
		{
			mt[i][j] = rand() % 100;
		}
	}
}

// hàm xuất mảng
void xuatMang(int mt[][COL], int m, int n)
{
	// xuất từng phần tử cho mảng
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < n; j++)
		{
			cout << mt[i][j] << "\t";
		}
		cout << endl;
	}
}

// tìm giá trị max của mảng 2 chiều
int timMax(int mt[][COL], int m, int n, int &im, int &jm)
{
	int i, j, max;
	max = mt[0][0];
	im = 0;
	jm = 0;
	for (i = 0; i < m; i++)
		for (j = 0; j < n; j++)
			if (mt[i][j] > max)
				{ 
				    max = mt[i][j];
				    im = i;
				    jm = j;
				}
	return max;
}

// tìm giá trị min của mảng 2 chiều
int timMin(int mt[][COL], int m, int n, int &im, int &jm)
{
	int i, j, min;
	min = mt[0][0];
	im = 0;
	jm = 0;
	for (i = 0; i < m; i++)
		for (j = 0; j < n; j++)
			if (mt[i][j] < min)
				{ 
				    min = mt[i][j];
				    im = i;
				    jm = j;
				}
	return min;
}

// tìm min/max theo hàng
void timMinMaxTheoHang(int mt[][COL], int m, int n)
{
    int i, j, min, max, jmin, jmax;
    for (i = 0; i < m; i++) {
        min = mt[i][0];
        max = mt[i][0];
        jmin = 0;
        jmax = 0;
        for (j = 0; j < n; j++) {
            if (mt[i][j] > max)
            {
                max = mt[i][j];
                jmax = j;
            }
            if (mt[i][j] < min)
            {
                min = mt[i][j];
                jmin = j;
            }
        }
        cout << "Hang " << i << endl;
        cout << "Max: " << max << " tai [" << i << "][" << jmax << "]";
        cout << ", Min: " << min << " tai [" << i << "][" << jmin << "]";
        cout << endl;
    }
}

// tìm min/max theo cột
void timMinMaxTheoCot(int mt[][COL], int m, int n) {
    int i, j, min, max, imin, imax;
    for (j = 0; j < n; j++) {
        min = mt[0][j];
        max = mt[0][j];
        imin = 0;
        imax = 0;
        for (i = 0; i < m; i++) {
            if (mt[i][j] > max)
            {
                max = mt[i][j];
                imax = i;
            }
            if (mt[i][j] < min)
            {
                min = mt[i][j];
                imin = i;
            }
        }
        cout << "Cot " << j << endl;
        cout << "Max: " << max << " tai [" << imax << "][" << j << "]";
        cout << ", Min: " << min << " tai [" << imin << "][" << j << "]";
        cout << endl;
    }
}
Kết quả

Loading

What’s your Reaction?
+1
2
+1
0
+1
0

Leave a Reply

Your email address will not be published. Required fields are marked *