mang 2 chieu-1
Hàm nhập & xuất ma trận các số nguyên void nhap(int a[][100],int &m,int &n)
{
MA TRẬ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("
");
}
}
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("
");
}
}
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("
");
}
}
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("
");
}
}
Kĩ thuật tính toán
Chuyên đề về ma trận thường
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("
a[%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])
{
}
}
else
{
return 0;
}
}
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])
{
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])
{
}
}
else
{
return 0;
}
}
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 TongCucTri(float a[][100], int dong, int cot)
{
int S=0;
for (int i=0;i<dong; i++)
{
for (int j=0; j<cot; j++)
{
if (CucTri(a,dong,cot,i,j)==1)
{
S+=a[i][j];
}
}
}
return S;
}
346 Đếm số lượng giá trị "hoàng hậu" trên ma trận. 1 ptử hoàng hậu khi nó lớn nhất trên dòng, cột và 2 đường chéo int XetDuongCheo(int a[][100],int dong,int cot, int i, int j)
{
int k,h; //k : dong, h : cot
for (k=i,h=j; k>=0 && h<cot; k--, h++)
{
if (a[k][h] > a[i][j])
{
return 0;
}
}
for (k=i+1, h=j-1; k<dong && h>=0; k++, h--)
{
if (a[k][h] > a[i][j])
{
return 0;
}
}
for (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<dong && h<cot; k++, h++)
{
if (a[k][h] > a[i][j])
{
return 0;
}
}
return 1;
}
int XetCotDong(int a[][100],int dong,int cot, int i, int j)
{
for (int k=0; k<dong; k++ )
{
if (a[k][j]>a[i][j])
{
return 0;
}
}
for (k=0; k<cot; k++ )
{
if (a[i][k]>a[i][j])
{
return 0;
}
}
return 1;
}
int XetTongQuat(int a[][100],int dong,int cot, int i, int j)
{
if (XetCotDong(a,dong,cot,i,j)==1)
if (XetDuongCheo(a,dong,cot,i,j)==1)
return 1;
else
return 0;
return 0;
}
int DemHoangHau(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 (XetTongQuat(a,dong,cot,i,j) == 1) //la hoang hau
{
dem ++;
}
}
}
return dem;
}
347 Đếm số lượng "yên ngựa".1 ptử yên ngựa khi nó lớn nhất trên dòng, nhỏ nhất trên cột int XetCotDong(int a[][100],int dong,int cot, int i, int j)
{
for (int k=0; k<dong; k++ )
{
if (a[k][j]<a[i][j])
{
return 0;
}
}
for (k=0; k<cot; k++ )
{
if (a[i][k]>a[i][j])
{
return 0;
}
}
return 1;
}
int DemYenNgua(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 (XetCotDong(a,dong,cot,i,j) == 1)
{
dem ++;
}
}
}
return dem;
}
Kĩ thuật Đặt Cờ Hiệu
348 Ktra ma trận có số dương ko
int Ktra(int a[][100],int dong,int cot)
{
int flag = 0;
for (int i=0; i<dong; i++)
{
for (int j=0;j<cot;j++)
{
if (a[i][j]>0)
{
flag=1;
break;
}
}
}
return flag;
}
349 Ktra ma trận có số hoàn thiện ko 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 Ktra(int a[][100],int dong,int cot)
{
int flag = 0;
for (int i=0; i<dong; i++)
{
for (int j=0;j<cot;j++)
{
if (sohoanthien(a[i][j])==1)
{
flag=1;
break;
}
}
}
return flag;
}
350 Ktra ma trận có số lẻ ko
int Ktra(int a[][100],int dong,int cot)
{
int flag = 0;
for (int i=0; i<dong; i++)
{
for (int j=0;j<cot;j++)
{
if (a[i][j]%2!=0)
{
flag=1;
break;
}
}
}
return flag;
}
351 Ktra ma trận có toàn dương ko
int Ktra(int a[][100],int dong,int cot)
{
int flag = 1;
for (int i=0; i<dong; i++)
{
for (int j=0;j<cot;j++)
{
if (a[i][j]<0)
{
flag=0;
break;
}
}
}
return flag;
}
352 Ktra 1 hàng ma trận có tăng dần hay ko
int Ktra(int a[][100],int dong,int cot, int DongCanTinh)
{
int flag = 1; //coi nh? dòng t?ng for (int j=0;j<cot-1;j++)
{
if (a[DongCanTinh][j]>a[DongCanTinh][j+1])
{
flag=0; //dòng ko t?ng break;
}
}
return flag;
}
353 Ktra 1 cột ma trận có giảm dần ko
int Ktra(int a[][100],int dong,int cot, int CotXet)
{
int flag = 1;
for (int i=0;i<dong-1;i++)
{
if (a[i][CotXet]<a[i+1][CotXet])
{
flag=0;
break;
}
}
return flag;
}
354 Ktra các gtrị trong ma trận có giảm dần theo cột và dòng hay ko int Ktra(int a[][100],int dong,int cot)
{
int flag =1;
int i,j;
//Ktra dong truoc for (i=0;i<dong;i++)
{
for (j=0; j<cot-1;j++)
{
if (a[i][j]<a[i][j+1])
{
flag=0;
break;
}
}
}
//Ktra cot sau
for (j=0; j<cot;j++)
{
for (i=0; i<dong-1;i++)
{
if (a[j][i]<a[j][i+1])
{
flag=0;
break;
}
}
}
return flag;
}
355 Liệt kê các dòng toàn âm trong ma trận các số thực void LietKe(float a[][100],int dong,int cot)
{
int i,j,flag;
//Ktra dong truoc for (i=0;i<dong;i++)
{
for (flag =1,j=0; j<cot;j++)
{
if (a[i][j]>0)
{
flag=0;
break;
}
}
if (flag == 1)
{
printf("
Dong a[%d] toan am : ",i);
for (j=0;j<cot;j++)
{
printf(" %.2f ",a[i][j]);
}
}
}
}
356 Liệt kê chỉ số các dòng chứa toàn giá trị chẵn void LietKe(int a[][100],int dong,int cot)
{
int i,j,flag;
//Ktra dong truoc for (i=0;i<dong;i++)
{
for (flag =1,j=0; j<cot;j++)
{
if (a[i][j]%2!=0)
{
flag=0;
break;
}
}
if (flag == 1)
{
printf("
Dong a[%d] toan chan ",i);
}
}
}
357 Liệt kê dòng chứa số nguyên tố
void LietKe(int a[][100],int dong,int cot)
{
int i,j,flag;
for (i=0;i<dong;i++)
{
for (flag =0,j=0; j<cot;j++)
{
if (SoNguyenTo(a[i][j])==1)
{
flag=1;
break;
}
}
if (flag == 1)
{
printf("
Dong a[%d] co chua so nguyen to ",i);
}
}
}
358 liệt kê các dòng có chứa giá trị chẵn void LietKe(int a[][100],int dong,int cot)
{
int i,j,flag;
for (i=0;i<dong;i++)
{
for (flag =0,j=0; j<cot;j++)
{
if (a[i][j]%2==0)
{
flag=1;
break;
}
}
if (flag == 1)
{
printf("
Dong a[%d] co chua chan ",i);
}
}
}
359 Liệt kê các dòng có chứa giá trị âm
void LietKe(int a[][100],int dong,int cot)
{
int i,j,flag;
for (i=0;i<dong;i++)
{
for (flag =0,j=0; j<cot;j++)
{
if (a[i][j] <0)
{
flag=1;
break;
}
}
if (flag == 1)
{
printf("
Dong a[%d] co chua gia tri am ",i);
}
}
}
360 Liệt kê các cột chứa số chính phương
void LietKe(int a[][100],int dong,int cot)
{
int i,j,flag;
for (j=0;j<cot;j++)
{
for (flag =0,i=0; i<dong;i++)
{
if (sochinhphuong(a[i][j])==1)
{
flag=1;
break;
}
}
if (flag == 1)
{
printf("
Cot a[%d] co chua so chinh phuong ",j);
}
}
}
361 Liệt kê các dòng thỏa: có giá trị âm, dương và 0 (ptử trung hòa)
void LietKe(int a[][100],int dong,int cot)
{
int i,j;
for (i=0;i<dong;i++)
{
if (n>2)
{
int flag[3] = {0};
for (j=0; j<cot;j++)
{
if (a[i][j]<0)
{
flag[0] = 1;
}
else if (a[i][j]==0)
{
flag[1] = 1;
}
else if (a[i][j]>0)
{
flag[2] = 1;
}
if (flag[0]+flag[1]+flag[2]==3)
{
printf("
Dong a[%d] co ptu am, duong, 0",i);
break;
}
}
}
}
}
362 Liệt kê các dòng giảm dần
void LietKe(int a[][100],int dong,int cot)
{
int i,j,flag;
for (i=0;i<dong;i++)
{
for (flag =1,j=0; j<cot-1;j++)
{
if (a[i][j]<a[i][j+1])
{
}
}
if (flag == 1)
{
flag = 0;
break;
printf("
Dong a[%d] giam",i);
}
}
}
363 Liệt kê các cột tăng dần
void LietKe(int a[][100],int dong,int cot)
{
int i,j,flag;
for (j=0;j<cot;j++)
{
for (flag =1,i=0; i<dong-1;i++)
{
if (a[i][j]>a[i+1][j])
{
flag = 0;
break;
}
}
if (flag == 1)
{
printf("
Cot a[%d] tang",j);
}
}
}
364 Cho 2 ma trận A,B. Ktra ma trận A có là ma trận con của B ko?
int KiemTra(int a[][100], int donga, int cota, int b[][100], int dongb, int cotb)
{
int i,j,k,h,flag=0,s,t;
for (i=0; i<donga; i++)
{
for (j=0;j<cota;j++)
{
if (donga-i>=dongb && cota-j>=cotb && a[i][j]==b[0][0])
{
for (flag=1,s=i,k=0;k<dongb;k++,s++)
{
for (h=0,t=j;h<cotb;h++,t++)
{
if (b[k][h]!=a[s][t])
{
flag =0;
break;
}
}
if (flag == 0)
break;
else
}
}
}
}
return 1;
return 0;
}
365 Đếm số lần xuất hiện của ma trận A trong ma trận B?
int Dem(int a[][100], int donga, int cota, int b[][100], int dongb, int cotb)
{
int i,j,k,h,flag=1,s,t,dem=0;
for (i=0; i<donga; i++)
{
for (j=0;j<cota;j++)
{
if (donga-i>=dongb && cota-j>=cotb && a[i][j]==b[0][0])
{
for (s=i,k=0;k<dongb;k++,s++)
{
for (h=0,t=j;h<cotb;h++,t++)
{
if (b[k][h]!=a[s][t])
{
flag =0;
break;
}
}
if (flag == 0)
break;
}
if (flag == 1)
{
dem++;
}
}
}
}
return dem;
}
Kĩ thuật đặt lính canh
366 Tìm số chẵn đầu tiên trong ma trận
int GiaTriCanTim(int a[][100], int cot, int dong)
{
for (int i=0; i<dong; i++)
{
for(int j=0; j<cot; j++)
{
if (a[i][j]%2==0)
{
return a[i][j];
}
}
}
return -1;
}
367 Tìm max trong ma trận
int GiaTriCanTim(int a[][100], int cot, int dong)
{
int Max = a[0][0];
for (int i=0; i<dong; i++)
{
for(int j=0; j<cot; j++)
{
Max = (Max>a[i][j])?Max:a[i][j];
}
}
return Max;
}
368 Tìm giá trị lớn thứ 2 trong ma trận (max2)
int GiaTriCanTim(int a[][100], int cot, int dong)
{
int Max=a[0][0];
for (int i=0; i<dong; i++)
{
for(int j=0; j<cot; j++)
{
Max = (Max>a[i][j])?Max:a[i][j];
}
}
int Max2 = a[0][0];
for (i=0; i<dong; i++)
{
for(int j=0; j<cot; j++)
{
if (Max>Max2 && a[i][j]!=Max && Max2<a[i][j])
{
Max2 = a[i][j];
}
}
}
return Max2;
}
369 Tìm số dương đầu tiên trong ma trận
int GiaTriCanTim(int a[][100], int cot, int dong)
{
for (int i=0; i<dong; i++)
{
for(int j=0; j<cot; j++)
{
if (a[i][j]>0)
{
return a[i][j];
}
}
}
return -1;
}
370 Tìm giá trị âm lớn nhất trong ma trận
int AmDauTien(int a[][100], int cot, int dong)
{
for (int i=0; i<dong; i++)
{
for (int j=0; j<cot; j++)
{
if (a[i][j]<0)
{
return a[i][j];
}
}
}
return 0;
}
int GiaTriCanTim(int a[][100], int cot, int dong)
{
int AmMax = AmDauTien(a,cot,dong);
if (AmMax == 0)
{
return 0;
}
for (int i=0; i<dong;i++)
{
for (int j=0; j<cot; j++)
{
if (a[i][j]<0)
{
AmMax = (AmMax>a[i][j])?AmMax:a[i][j];
}
}
}
return AmMax;
}
371 Liệt kê các dòng có chứa max
int GiaTriMax(int a[][100], int cot, int dong)
{
int Max = a[0][0];
for (int i=0; i<dong; i++)
{
for(int j=0; j<cot; j++)
{
Max = (Max>a[i][j])?Max:a[i][j];
}
}
return Max;
}
void LietKe(int a[][100], int cot, int dong)
{
int Max = GiaTriMax(a,cot,dong);
for (int i=0; i<dong;i++)
{
for (int j=0; j<cot; j++)
{
if (a[i][j]==Max)
{
printf("
Dong [%d] chua max: ", i);
for (j=0; j<cot; j++)
{
printf("%4d", a[i][j]);
}
}
}
}
}
372 Tìm giá trị lớn nhất trên 1 dòng
void LietKe(int a[][100], int cot, int dong)
{
for (int i=0; i<dong;i++)
{
int Max = a[i][0];
for (int j=0; j<cot; j++)
{
Max = (Max>a[i][j])?Max:a[i][j];
}
printf("
Dong %d: ",i) ;
printf("Gia tri max %d",Max);
}
}
373 Tìm giá trị nhỏ nhất trên 1 cột
void LietKe(int a[][100], int cot, int dong)
{
for (int i=0; i<cot;i++)
{
int Min = a[0][i];
for (int j=0; j<dong; j++)
{
Min = (Min<a[j][i])?Min:a[j][i];
}
printf("
Cot %d: ",i) ;
printf("Gia tri min %d",Min);
}
}
374 Tìm số nguyên tố đầu tiên
int SoNguyenTo(int a)
{
if (a<=1)
{
return 0;
}
for (int i=2; i<a; i++)
{
if (a%i==0)
{
return 0;
}
}
return 1;
}
int GiaTriCanTim(int a[][100], int cot, int dong)
{
for (int i=0; i<dong; i++)
{
for(int j=0; j<cot; j++)
{
if (SoNguyenTo(a[i][j])==1)
{
return a[i][j];
}
}
}
return -1;
}
375 Tìm số chẵn lớn nhất
int ChanDauTien(int a[][100], int cot, int dong)
{
for (int i=0; i<dong; i++)
{
for (int j=0; j<cot; j++)
{
if (a[i][j]%2==0)
{
return a[i][j];
}
}
}
return -1;
}
int GiaTriCanTim(int a[][100], int cot, int dong)
{
int ChanMax = ChanDauTien(a,cot,dong);
if (ChanMax == -1)
{
return -1;
}
for (int i=0; i<dong;i++)
{
for (int j=0; j<cot; j++)
{
if (a[i][j]%2==0)
{
ChanMax = (ChanMax>a[i][j])?ChanMax:a[i][j];
}
}
}
return ChanMax;
}
376 Tìm số dương nhỏ nhất
int DuongDauTien(int a[][100], int cot, int dong)
{
for (int i=0; i<dong; i++)
{
for (int j=0; j<cot; j++)
{
if (a[i][j]>0)
{
return a[i][j];
}
}
}
return -1;
}
int GiaTriCanTim(int a[][100], int cot, int dong)
{
int DuongMin = DuongDauTien(a,cot,dong);
if (DuongMin == -1)
{
return -1;
}
for (int i=0; i<dong;i++)
{
for (int j=0; j<cot; j++)
{
if (a[i][j]>0)
{
DuongMin = (DuongMin<a[i][j])?DuongMin:a[i][j];
}
}
}
return DuongMin;
}
377 Tìm số nguyên tố lớn nhất
int SoNguyenTo(int a)
{
if (a<=1)
{
return 0;
}
for (int i=2; i<a; i++)
{
if (a%i==0)
{
return 0;
}
}
return 1;
}
int SoNguyenToDauTien(int a[][100], int cot, int dong)
{
for (int i=0; i<dong; i++)
{
for (int j=0; j<cot; j++)
{
if (SoNguyenTo(a[i][j])==1)
{
return a[i][j];
}
}
}
return -1;
}
int GiaTriCanTim(int a[][100], int cot, int dong)
{
int SoNguyenToMax = SoNguyenToDauTien(a,cot,dong);
if (SoNguyenToMax == -1)
{
return -1;
}
for (int i=0; i<dong;i++)
{
for (int j=0; j<cot; j++)
{
if (SoNguyenTo(a[i][j])==1)
{
SoNguyenToMax = (SoNguyenToMax>a[i][j])?SoNguyenToMax:a[i][j];
}
}
}
return SoNguyenToMax;
}
378 Tìm 1 chữ số xuất hiện nhiều nhất
void ChuSo(int n, int b[])
{
int DonVi; n = abs(n); do
{
DonVi = n%10; b[DonVi]++; n=n/10;
} while (n>0);
}
int GiaTriCanTim(int a[][100], int cot, int dong)
{
int b[10] = {0};
for (int i=0; i<dong;i++)
{
for (int j=0; j<cot; j++)
{
ChuSo(a[i][j],b);
}
}
int ChuSoNhieuNhat = 0;
for (i=1; i<10; i++)
{
if (b[ChuSoNhieuNhat] < b[i])
{
ChuSoNhieuNhat = i;
}
}
return ChuSoNhieuNhat;
}
Bạn đang đọc truyện trên: Truyen247.Pro