1. Trang chủ
  2. » Công Nghệ Thông Tin

Chuyên đề mảng 2 chiều phần 1 ppsx

14 940 11

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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,

Ngày đăng: 29/07/2014, 21:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w