đây là định nghĩa ma trận
#pragma once
#include <iostream>
#include <fstream>
#include <iostream>
#include<cstdlib>
#include<stdlib.h>
#include<fstream>
#include<math.h>
#include <ctime>
#include"iostream"
using namespace std;
#define MAX 10
class matran
{
private:
int n;
int m[MAX][MAX];
public:
matran();
// ham tạo ma tran
void nhap();//nhap ma tran bang tay
void nhap_ngaunhien();//nhap ma tran ngau nhien
int get_n();//nhan gia tri cua n
void setMaTran(int);// set so cot va so dong cua ma tran
void setPhanTu(int, int, int);// set phan tu
int getPhanTu(int, int);//lay 1 phan tu
void xuat();//xuat ma tran ra man hinh
void nhapfile();// nhap tu file//
void xuatfile();// xuat ra file//
int tongcheochinh(); //tong cac phan tu tren duong cheo chinh//
void phantuchan(); //phan tu chan nho nhat tren duong cheo phu//
int tamgiactren(); //tong cac phan tu thuoc tam giac tren//
void tamgiacduoi(); //tong cac phan tu thuoc vung tam giac duoi//
bool ktsnt(int x); //kiem tra so nguyen to//
void sntln(); // tim so nguyen to lon nhat tren duong cheo chinh//
bool kiemtratren(); // kiem tra ma tran tam giac tren//
bool kiemtraduoi(); //kiem tra ma tran tam giac duoi//
bool kiemtradonvi(); //kiem tra ma tran don vi//
bool kiemtradx(); // kiem tra doi xung qua duong cheo chinh//
void sapxep(); // sap xep tang dan tung dong//
void operator = (matran );
matran operator + (matran&); // tong hai ma tran//
matran operator - (matran&);// hieu cua hai ma tran//
matran operator * (matran&);// tich cua hai ma tran//
bool kiemtracheochinh();//kiem tra duong cheo chinh//
~matran();
};
đây là các hàm trong matran
#include "ma_tran.h"
matran::matran()
{
this->n = 0;
}
void matran::setMaTran(int n)
{
this->n = n;
for (int i = 0; i<n; i++)
for (int j = 0; j<n; j++)
m[i][j] = 0;//mac dinh
}
void matran::setPhanTu(int i, int j, int x)
{
this->m[i][j] = x;
}
int matran::getPhanTu(int i, int j)
{
return this->m[i][j];
}
// nhap ma tran bang tay
void matran:: nhap()
{
cout << "nhap vao cap cua ma tran, n= ";
cin >> n; cout << endl;
for (int i = 0; i<n; i++)
for (int j = 0; j<n; j++)
{
cin >> m[i][j];
}
}
//nhap ma tran ngau nhien
void matran:: nhap_ngaunhien()
{
cout << "nhap vao cap cua ma tran, n= ";
cin >> n; cout << endl;
cout << "ma tran da duoc nhap ngau nhien" << endl;
srand((unsigned)time(NULL));
for (int i = 0; i<n; i++)
for (int j = 0; j<n; j++)
{
m[i][j] = rand() % 10;
}
}
//tra ve gia tri cua n
int matran::get_n()
{
return n;
}
// xuat ma tran ra man hih
void matran:: xuat()
{
cout << "phan tu cua ma tran la" << endl;
for (int i = 0; i<n; i++)
{
for (int j = 0; j<n; j++)
{
cout << m[i][j] << " ";
}
cout << endl;
cout << endl;
}
}
//xuat ma tran ra file
void matran::xuatfile()
{
matran M;
ofstream matrandemo("ma tran.txt");
matrandemo << "phan tu cua ma tran la" << endl;
for (int i = 0; i<n; i++)
{
for (int j = 0; j<n; j++)
{
matrandemo << m[i][j] << " ";
}
matrandemo << endl;
matrandemo << endl;
}
}
//nhap du lieu tu file
void matran::nhapfile()
{
ifstream matrandemo("matrandemo.txt");
matrandemo >> n;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
matrandemo >> m[i][j];
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cout << m[i][j];
cout << " ";
}
cout << "\n";
}
matrandemo.close();
system("pause");
}
//kiem tra so nguyen to//
bool matran::ktsnt(int x)
{
bool kt = true;
if (x<2)
{
kt = false;
}
if (x == 2)
{
kt = true;
}
else
{
for (int i = 2; i<x; i++)
{
if (x%i == 0)
{
kt = false;
break;
}
}
}
return (kt);
}
//tong cac phan tu tren duong cheo chinh//
int matran::tongcheochinh()
{
int s = 0;
for (int i = 0; i<n; i++)
for (int j = 0; j<n; j++)
{
if (i == j)
{
s += m[i][j];
}
}
return s;
}
//phan tu chan nho nhat tren duong cheo phu//
void matran::phantuchan()
{
int i = 0, dem = 0;
int min = m[i][n - 1 - i];
for (i = 0; i<n; i++)
{
if (m[i][n - 1 - i] % 2 == 0)
{
if (m[i][n - 1 - i]<min)
{
min = m[i][n - 1 - i];
}
}
else
{
dem++;
}
}
if (dem == n)
{
cout << "\t khong co phan tu chan" << endl;
}
else
{
cout << "\t phan tu chan nho nhat la " << min;
}
}
//tong cac phan tu thuoc tam giac tren//
int matran::tamgiactren()
{
int s = 0;
for (int i = 0; i<n; i++)
{
for (int j = i + 1; j<n; j++)
{
s += m[i][j];
}
}
return (s);
}
//tong cac phan tu nguyen to thuoc vung tam giac duoi//
void matran::tamgiacduoi()
{
int s = 0;
for (int i = 1; i<n; i++)
{
for (int j = 0; j<n; j++)
{
if (ktsnt(m[i][j]) == true && i>j)
{
s = s + m[i][j];
}
}
}
if (s>0)
cout << "\t tong cac so nguyen to la : " << s;
else
cout << "\t khong co so nguyen to! ";
}
//kiem tra ma tran tam giac duoi//
bool matran::kiemtraduoi()
{
bool kt = true;
for (int i = 0; i<n; i++)
{
for (int j = i + 1; j<n; j++)
{
if (m[i][j] != 0)
{
kt = false;
break;
}
}
}
return (kt);
}
// kiem tra ma tran tam giac tren//
bool matran::kiemtratren()
{
bool kt;
for (int i = 1; i<n; i++)
{
for (int j = 0; j<n; j++)
{
if (i>j)
{
if (m[i][j] == 0)
kt = true;
else
{
kt = false;
break;
}
}
}
}
return (kt);
}
//kiem tra duong cheo chinh//
bool matran::kiemtracheochinh()
{
bool kt;
for (int i = 0; i<n; i++)
for (int j = 0; j<n; j++)
{
if (i == j)
{
if (m[i][j] != 1)
{
kt = false;
break;
}
else
kt = true;
}
}
return (kt);
}
// kiem tra ma tran don vi//
bool matran::kiemtradonvi()
{
bool kt;
if ((kiemtracheochinh() == true) && (kiemtratren() == true) && (kiemtraduoi() == true))
{
kt = true;
}
else
{
kt = false;
}
return (kt);
}
// tim so nguyen to lon nhat tren duong cheo chinh//
void matran::sntln()
{
int max = 0, dem = 0;
for (int i = 0; i<n; i++)
{
for (int j = 0; j<n; j++)
{
if (i == j)
{
if (ktsnt(m[i][j]) == true)
{
if (max<m[i][j])
{
max = m[i][j];
}
}
else
{
dem++;
}
}
}
}
if (dem == n)
{
cout << "\t khong co so nguyen to" << endl;
}
else
{
cout << "\t so nguyen to lon nhat la " << max << endl;
}
}
// kiem tra tinh doi xung cua ma tran//
bool matran::kiemtradx()
{
bool kt;
for (int i = 0; i<n; i++)
{
for (int j = 0; j<n; j++)
{
if (m[i][j] == m[j][i])
{
kt = true;
}
else
{
kt = false;
break;
}
}
}
return (kt);
}
// sap xep tang dan tung dong//
void matran::sapxep()
{
int tam;
for (int i = 0; i<n; i++)
{
for (int j = 0; j<n - 1; j++)
{
for (int k = j + 1; k<n; k++)
{
if (m[i][j]>m[i][k])
{
tam = m[i][j];
m[i][j] = m[i][k];
m[i][k] = tam;
}
}
}
}
}
//phep gán ma tran tran
void matran::operator = (matran r)
{
n = r.get_n();
for (int i = 0; i<n; i++)
{
for (int j = 0; j<n; j++)
{
m[i][j] = r.getPhanTu(i,j);
}
}
}
//tong ma tran
matran matran:: operator + (matran &h)
{
matran p;
p.n = h.n;
for (int i = 0; i<n; i++)
for (int j = 0; j<n; j++)
p.setPhanTu(i, j, m[i][j] + h.m[i][j]);
return p;
}
//hieu ma tran
matran matran:: operator - (matran &h)
{
matran p;
p.n = h.n;
for (int i = 0; i<n; i++)
for (int j = 0; j<n; j++)
p.setPhanTu(i, j, m[i][j] - h.m[i][j]);
return p;
}
//tich ma tran
matran matran:: operator * (matran &h)
{
matran p;
p.n = h.n;
int temp;
int i,j,k;
for (i = 0; i<n; i++)
{
for ( j = 0; j<n; j++)
{
temp = 0;
for ( k = 0; k<n; k++)
{
temp = temp + (m[i][k] * h.m[k][j]);
}
p.setPhanTu(i,j,temp);
}
}
return p;
}
matran::~matran()
{
}
đây là main
#include <iostream>
#include <fstream>
#include <iostream>
#include<cstdlib>
#include<stdlib.h>
#include<fstream>
#include<math.h>
#include"ma_tran.h"
using namespace std;
//ham main//
int main(int argc, char** argv)
{
matran M, h;//khoi tao ma tran
int a;
int chon = -1;
cout << "Dai Hoc Thu Dau Mot-Lop D13HT01" << endl;
cout << "Chao thay va cac ban" << endl;
cout << "Thanh vien cua nhom:" << endl;
cout << "1. Ho The Manh" << endl;
cout << "2. Tran Pham Huu Giang" << endl;
cout << "3. Le Sy Thanh Truong" << endl;
cout << "4. Huynh Ngoc Thang" << endl;
cout << "5. Le Nhat Trinh" << endl;
cout << "================================000000000=============================" << endl;
cout << endl;
while (chon != 0)
{
cout << endl;
cout << "=======================000000=======================" << endl;
cout << "1. nhap ma tran tu ban phim " << endl;
cout << "2. nhap ma tran tu file " << endl;
cout << "3. xuat ma tran ra man hinh " << endl;
cout << "4. xuat ma tran vao file " << endl;
cout << "5. tong phan tu tren duong cheo chinh " << endl;
cout << "6. phan tu chan nho nhat tren duong cheo phu" << endl;
cout << "7. tong cac phan tu thuoc tam giac tren " << endl;
cout << "8. tong cac phan tu nguyen to thuoc vung tam giac duoi " << endl;
cout << "9. tim so nguyen to lon nhat tren duong cheo chinh " << endl;
cout << "10. kiem tra ma tran tam giac duoi " << endl;
cout << "11. kiem tra ma tran tam giac tren " << endl;
cout << "12. kiem tra ma tran don vi " << endl;
cout << "13. kiem tra ma tran doi xung qua duong cheo chinh " << endl;
cout << "14. sap xep cac phan tu tren mang tang dan tung dong " << endl;
cout << "15. tinh tong, hieu, thuong tich cua 2 ma tran " << endl;
cout << "0. thoat.";
cout << endl;
cout << "\t ban chon : ";
cin >> chon;
cout << endl;
if (chon == 1)
{
cout << "1. nhap bang tay"<<endl;
cout << "2. nhap ngau nhien"<<endl;
cin >> a;
if (a==1)
M.nhap();
if (a == 2)
M.nhap_ngaunhien();
}
if (chon == 2)
{
M.nhapfile();
}
if (chon == 3)
{
M.xuat();
}
if (chon == 4)
{
cout << "ma tran da duoc nhap vao file";
M.xuatfile();
}
if (chon == 5)
{
cout << "\t tong cac phan tu tren duong cheo chinh la:" << M.tongcheochinh() << endl;
}
if (chon == 6)
{
M.phantuchan();
}
if (chon == 7)
{
cout << "\t tong cac phan tu tam giac tren la : " << M.tamgiactren();
}
if (chon == 8)
{
M.tamgiacduoi();
}
if (chon == 9)
{
M.sntln();
}
if (chon == 10)
{
if (M.kiemtraduoi() == true)
{
cout << "\t day la ma tran tam giac duoi." << endl;
}
else
cout << "\t day khong phai ma tran tam giac duoi." << endl;
}
if (chon == 11)
{
if (M.kiemtratren() == true)
{
cout << "\t day la ma tran tam giac tren." << endl;
}
else
cout << "\t day khong phai la ma tran tam giac tren." << endl;
}
if (chon == 12)
{
if (M.kiemtradonvi() == true)
cout << "\t day la ma tran don vi." << endl;
else
cout << "\t day khong phai la ma tran don vi." << endl;
}
if (chon == 13)
{
if (M.kiemtradx() == true)
cout << "\t day la ma tran doi xung!" << endl;
else
cout << "\t day khong phai la ma tran doi xung!" << endl;
}
if (chon == 14)
{
cout << "ma tran da duoc sap xep" << endl;
M.sapxep();
M.xuat();
}
if (chon == 15)
{
cout << "\t ban hay nhap matran thu 2:" << endl;
do
{
cout << "\t cap ma tran thu 2 bang ma tran thu nhat " << endl;
cout << "1. nhap bang tay" << endl;
cout << "2. nhap ngau nhien" << endl;
cin >> a;
if (a == 1)
h.nhap();
if (a == 2)
h.nhap_ngaunhien();
}
while (h.get_n() != M.get_n());
cout << "ma tran thu 2 la:" << endl;
h.xuat();
cout << "\t tong 2 ma tran" << endl;
M.tongmatran(h);
cout << "\t hieu 2 ma tran" << endl;
M.hieumatran(h);
cout << "\t tich 2 ma tran" << endl;
M.tichmatran(h);
}
}
return 0;
}