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;
}
}

![]()
What’s your Reaction?
+1
2
+1
+1