Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 14 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
14
Dung lượng
129,69 KB
Nội dung
MA TRẬN Hàm nhập & xuất ma trận các số nguyên void nhap(int a[][100],int &m,int &n) { printf("Nhap m:"); scanf("%d",&m); printf("Nhap n:"); scanf("%d",&n); for(int i=0;i<m;i++) for(int j=0;j<n;j++) { printf("Nhap a[%d][%d]:",i,j); scanf("%d",&a[i],[j]); } } void xuat(int a[][100],int m,int n) { for(int i=0;i<m;i++) { for(int j=0;j<n;j++) printf("%4d",a[i][j]); printf("\n"); } } Hàm nhập & xuất ma trận các số thực void nhap(float a[][100],int &m,int &n) { printf("Nhap m :"); scanf("%d",&m); printf("Nhap n :"); scanf("%d",&n); for(int i=0;i<m;i++) for(int j=0;j<n;j++) { printf("Nhap a[%d][%d]:",i,j); scanf("%f",&a[i],[j]); } } void xuat(float a[][100],int m,int n) { for(int i=0;i<m;i++) { for(int j=0;j<n;j++) printf("%8.3f",a[i][j]); printf("\n "); } } Hàm nhập & xuất ma trận các số nguyên dài void nhap(long a[][100],int &m,int &n) { printf("Nhap m :"); scanf("%d",&m); printf("Nhap n:"); scanf("%d",&n); for(int i=0;i<m;i++) for(int j=0;j<n;j++) { printf("Nhap a[%d][%d]",i,j); scanf("%ld",&a[i][j]); } } void xuat(long a[][100],int m,int n) { for(int i=0;i<m;i++) { for(int j=0;j<n;j++) printf("%ld",a[i][j]); printf("\n "); } } Hàm nhập & xuất ma trận các số thực dài void nhap(double a[][100],int &m,int &n); { printf("Nhap m :"); scanf("%d",&m); prinf("Nhap n :"); scanf("%d",&n); for(int i=0;i<m;i++) for(int j=0;j<n;j++) { printf("Nhap a[%d][%d]",i,j); scanf("%lf",&a[i][j]); } } void xuat(double a[][100],int m,int n) { for(int i=0;i<m;i++) { for(int j=0;j<n;j++) printf("%lf",a[i][j]); printf("\n "); } } Chuyên đề về ma trận thường Kĩ thuật tính toán 320 Tổng các số dương trong ma trận thực int TongSoDuong(int a[][100], int n, int m) { int s=0; for (int i=0; i<n; i++) for (int j=0; j<m; j++) if (a[i][j]>0) s+=a[i][j]; return s; } 321 Tích các số lẻ trong ma trận nguyên int TichGiaTriLe(int a[][100], int n, int m) { int t=1; for (int i=0; i<n; i++) for (int j=0; j<m; j++) if (a[i][j]%2!=0) t*=a[i][j]; return t; } 322 Tổng giá trị trên 1 dòng ma trận thực int TongDongX(float *a, int m) //chuy?n a[x] , x là dòng mà b?n c?n tính t?ng { int S=0; for (int i=0; i<m; i++) S+=a[i]; return S; } 323 Tích giá trị dương trên 1 cột ma trận thực float TichDuongCotY(float a[][100], int n, int m, int y) //y là s? c?t c?n tính { float T=1; for (int i=0; i<n; i++) if (a[i][y]>0) T*=a[i][y]; return T; } 324 Tổng giá trị dương trên 1 dòng ma trận thực int TongDuongDongX(float *a, int m) //chuy?n a[x] , x là dòng mà b?n c?n tính t?ng { int S=0; for (int i=0; i<m; i++) { if (a[i]>0) S+=a[i]; } return S; } 325 Tích các chẵn trên 1 cột ma trận nguyên int TichChanCotY(int a[][100], int n, int m, int y) //y là s? c?t c?n tính { int T=1; for (int i=0; i<n; i++) if (a[i][y]%2 = =0) T*=a[i][y]; return T; } 326 Trung bình cộng các số dương ma trận thực float TBCongDuong(float a[][100], int n, int m) { int S=0; int dem =0 ; for (int i=0; i<n; i++) { for (int j=0; j<m; j++) { if (a[i][j]>0) { S+=a[i][j]; dem++; } } } return (float)(S/dem); } 327 Tổng các giá trị nằm trên biên của ma trận int TongBien(int a[][100], int n, int m) { int S=0; for (int i=0; i<m; i++) { S = S+ a[0][i] + a[n-1][i]; } for (i=1; i<n-1; i++) { S = S+ a[i][0] + a[i][m-1]; } return S; } 328 Trung bình nhân các số dương ma trận thực float TBNhanDuong(float **a, int n, int m) { float T=1; int dem =0 ; for (int i=0; i<n; i++) { for (int j=0; j<m; j++) { if (a[i][j]>0) { T*=a[i][j]; dem++; } } } return pow(T,1.0/dem); } 329 Biến đổi ma trận bằng cách thay các giá trị âm bằng giá trị tuyệt đối của nó void BienDoiMaTran(int a[][100], int n, int m) { for (int i=0; i<n; i++) for (int j=0; j<m; j++) a[i][j] = abs(a[i][j]); } 330 Biến đổi ma trận thực bằng cách thay các giá trị bằng giá trị nguyên gần nó nhất float XuLy(float n) { float PhanNguyen = (int)(n); float PhanLe = n - PhanNguyen; if (PhanLe < 0,5) { return PhanNguyen; } return PhanNguyen+1; } void BienDoiMaTran(float a[][100], int dong, int cot) { for (int i=0;i<dong; i++) { for (int j=0; j<cot; j++) { a[i][j] = XuLy(a[i][j]); } } } 331 Tổng các giá trị trên 1 dòng ma trận thực float TongDongX(int a[], int m) //chuy?n a[x] , x là dòng mà b?n c?n tính t?ng { float S=0; for (int i=0; i<m; i++) S+=a[i]; return S; } 332 Tổng giá trị lẻ trên 1 cột ma trận nguyên int TongLeCotY(int a[][100], int n, int m, int y) //y là s? c?t c?n tính { int S=0; for (int i=0; i<n; i++) if (a[i][y]%2 ! =0) S+=a[i][y]; return S; } 333 Tổng các số hoàn thiện trong ma trân số nguyên int sohoanthien(int n) { int tong=0; for (int i=1 ; i<n; i++) if(n%i==0) tong = tong + i; if (tong == n) return 1; return 0; } int TongSoHoanThien(int a[][100],int n, int m) { int S=0; for (int i=0;i<dong; i++) for (int j=0; j<cot; j++) if (SoHoanThien(a[i][j])==1) S+=a[i][j]; return S; } Kĩ thuật đếm 334 Viết hàm đếm số lượng số dương trong ma trận thực int DemDuong(float a[][100], int dong, int cot) { int dem=0; for (int i=0;i<dong; i++) for (int j=0; j<cot; j++) if (a[i][j]>0) dem++; return dem; } 335 Đếm số lượng số ng tố trong ma trận nguyên int SoNguyenTo(int n) { if (n<=1) return 0; for (int i=2; i<n; i++) if (n%i==0) return 0; return 1; } int DemSoNguyenTo(int a[][100], int dong, int cot) { int dem=0; for (int i=0;i<dong; i++) for (int j=0; j<cot; j++) if (SoNguyenTo(a[i][j])==1) dem++; return dem; } 336 Đếm tần suất xuất hiện của 1 giá trị x trong ma trận thực int DemGiaTriX(float a[][100], int dong, int cot, float x) { int dem=0; for (int i=0;i<dong; i++) for (int j=0; j<cot; j++) if (a[i][j]==x) dem++; return dem; } 337 Đếm số chữ số trong ma trận số nguyên dương int DemTungSo(int n) { int dem = 1; n = abs(n); while (n>=10) { n= n/10; dem++; } return dem; } int Dem(int a[][100], int dong, int cot) { int dem = 0; for (int i=0;i<dong; i++) { for (int j=0; j<cot; j++) { dem += DemTungSo(a[i][j]); } } return dem; } 338 Đếm số lượng số dương trên 1 hàng ma trận thực int DemDuong(float a[][100], int cot, int HangCanTinh) { int dem=0; for (int j=0; j<cot; j++) if (a[HangCanTinh][j]>0) dem++; return dem; }339 Đếm số lượng số hoàn thiện trên 1 hàng ma trận nguyên int SoHoanThien(int n) { if (n<=0) return 0; int s=0; for (int i=1;i<n;i++) if (n%i==0) s+=i; if (s==n) return 1; return 0; } int DemSoHoanThien(int a[][100], int cot, int HangCanTinh) { int dem=0; for (int j=0; j<cot; j++) if (SoHoanThien(a[HangCanTinh][j])==1) dem++; return dem; } 340 Đếm số lượng âm trên 1 cột ma trận thực int DemSoDuong(float a[][100], int dong, int CotCanTinh) { int dem=0; for (int i=0; i<dong; i++) if (a[i][CotCanTinh]<0) dem++; return dem; } 341 Đếm số lượng dương trên biên của ma trận thực int DemSoDuong(float a[][100], int dong, int Cot) { int dem=0; for (int j=0; j<Cot; j++) { if (a[0][j]>0) dem++; if (a[dong-1][j]>0) dem++; } for (int i=1; i<dong-1; i++) { if (a[i][0]>0) dem++; if (a[i][Cot-1]>0) dem++; } return dem; } 342 Đếm số lượng ptử cực đại ma trận thực. 1 ptử cực đại là khi nó lớn hơn các ptử xung quanh int CucDai(float a[][100],int dong,int cot, int i, int j) { int dx[8]={-1,-1,-1, 0, 0, 1, 1, 1}; int dy[8]={-1, 0, 1,-1, 1,-1, 0, 1}; for (int k=0; k<8; k++) { if ((0<=dx[k]+i && dx[k]+i<dong) && (0<=dy[k]+j && dy[k]+j < cot)) { if (a[i][j]<a[dx[k]+i][dy[k]+j]) { return 0; } } } return 1; } int DemCucDai(float a[][100], int dong, int cot) { int dem=0; for (int i=0;i<dong; i++) { for (int j=0; j<cot; j++) { if (CucDai(a,dong,cot,i,j)==1) { printf("\na[%d][%d] = %d",i,j,a[i][j]); dem++; } } } return dem; } 343 Đếm số lượng ptử cực trị ma trận thực.1 ptử cực trị khi nó lớn hơn hoặc nhỏ hơn ptử xung quanh int CucTri(float a[][100],int dong,int cot, int i, int j) { int dx[8]={-1,-1,-1, 0, 0, 1, 1, 1}; int dy[8]={-1, 0, 1,-1, 1,-1, 0, 1}; for (int k=0; k<8; k++) { if ((0<=dx[k]+i && dx[k]+i<dong) && (0<=dy[k]+j && dy[k]+j < cot)) { if (a[i][j]<a[dx[k]+i][dy[k]+j]) { for (k=k+1; k<8; k++) { if ((0<=dx[k]+i && dx[k]+i<dong) && (0<=dy[k]+j && dy[k]+j < cot)) { if (a[i][j]>a[dx[k]+i][dy[k]+j]) { return 0; } } } } else { for (k=k+1; k<8; k++) { if ((0<=dx[k]+i && dx[k]+i<dong) && (0<=dy[k]+j && dy[k]+j < cot)) { if (a[i][j]<a[dx[k]+i][dy[k]+j]) { return 0; } } } } } } return 1; } int DemCucTri(float a[][100], int dong, int cot) { int dem=0; for (int i=0;i<dong; i++) { for (int j=0; j<cot; j++) { if (CucTri(a,dong,cot,i,j)==1) { dem++; } } } return dem; } 344 Đếm số lượng giá trị có trong ma trận thực. Lưu ý: nếu có k ptử (k>=1) trong ma trận bằng nhau thì ta chỉ tính là 1 int Xet(float a[][100], int dong,int cot, int i, int j) { int k, h; //k: dong, h: cot for (h=j+1; h<cot; h++) { if (a[i][h] == a[i][j]) { return 0; } } for (k=i+1; k<dong; k++) { for (h=0; h<cot; h++) { if (a[k][h] == a[i][j]) { return 0; } } } return 1; } int DemPtu(float a[][100],int dong,int cot) { int dem=0; for (int i=0; i<dong; i++) { for (int j=0; j<cot; j++) { if (Xet(a,dong,cot,i,j)==1) { dem++; } } } return dem; } 345 Tính tổng các ptử cực trị trong ma trận thực int CucTri(float a[][100],int dong,int cot, int i, int j) { int dx[8]={-1,-1,-1, 0, 0, 1, 1, 1}; int dy[8]={-1, 0, 1,-1, 1,-1, 0, 1}; for (int k=0; k<8; k++) { if ((0<=dx[k]+i && dx[k]+i<dong) && (0<=dy[k]+j && dy[k]+j < cot)) { if (a[i][j]<a[dx[k]+i][dy[k]+j]) { [...]... (k=i -1, h =j -1; k>=0 && h>=0; k ,h ) { if (a[k][h] > a[i][j]) { return 0; } } for (k=i +1, h=j +1; k . thực .1 ptử cực trị khi nó lớn hơn hoặc nhỏ hơn ptử xung quanh int CucTri(float a[] [10 0],int dong,int cot, int i, int j) { int dx[8]={ -1, -1, -1, 0, 0, 1, 1, 1} ; int dy[8]={ -1, 0, 1, -1, 1, -1, . CucDai(float a[] [10 0],int dong,int cot, int i, int j) { int dx[8]={ -1, -1, -1, 0, 0, 1, 1, 1} ; int dy[8]={ -1, 0, 1, -1, 1, -1, 0, 1} ; for (int k=0; k<8; k++) { if ((0<=dx[k]+i &&. (Xet(a,dong,cot,i,j)= =1) { dem++; } } } return dem; } 345 Tính tổng các ptử cực trị trong ma trận thực int CucTri(float a[] [10 0],int dong,int cot, int i, int j) { int dx[8]={ -1, -1, -1, 0, 0, 1, 1,