Tải bản đầy đủ (.pdf) (19 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (139.95 KB, 19 trang )

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("\nDong 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("\nDong 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("\nDong 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("\nDong 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("\nDong 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("\nCot 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("\nDong 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])
{
flag = 0;
break;
}

}
if (flag == 1)
{
printf("\nDong 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("\nCot 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("\nDong [%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("\nDong %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("\nCot %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;
}


379 Đếm số lượng min
int GiaTriCanTim(int a[][100], int cot, int dong)
{
int dem = 0;
int Min = a[0][0];
for (int i=0; i<dong;i++)
{
for (int j=0; j<cot; j++)
{
if (Min == a[i][j])
{
dem ++ ;
}
else if (Min > a[i][j])
{
Min = a[i][j];
dem = 1;
}
}
}
return dem;
}

380 Đếm số lượng chẵn nhỏ nhất
int GiaTriCanTim(int a[][100], int cot, int dong)
{
int dem = 0;
int Min = a[0][0];
for (int i=0; i<dong;i++)
{

for (int j=0; j<cot; j++)
{
if (Min == a[i][j])
{
dem ++ ;
}
else if (Min > a[i][j])
{
Min = a[i][j];
dem = 1;
}
}
}
return dem;
}

381 Tìm giá trị xuất hiện nhiều nhất
int GiaTriCanTim(int a[][100], int cot, int dong)
{
int flag[100][100] = {0};
int GiaTri , Dem = 0,Dem1=0;
for (int i=0; i<dong; i++)
{
for(int j=0; j<cot; j++)
{
if (flag[i][j]==0)
{
for (int k=i; k<dong; k++)
{
for (int h=0; h<cot;h++)

{
if (flag[k][h]==0)
{
if (a[i][j] == a[k][h])
{
flag[k][h] = 1;
Dem++;
}
}
}
}
if (Dem > Dem1)
{
Dem1 = Dem;
GiaTri = a[i][j];
Dem = 0;
}
}
}
}
return GiaTri;
}

382 Tìm số chính phương lớn nhất
int SoChinhPhuong(int n)
{
int a = sqrt (n);
if (a*a == n)
{
return 1;

}
return 0;
}
int SoChinhPhuongDauTien(int a[][100], int cot, int dong)
{
for (int i=0; i<dong; i++)
{
for (int j=0; j<cot; j++)
{
if (SoChinhPhuong(a[i][j])==1)
{
return a[i][j];
}
}
}
return -1;
}
int GiaTriCanTim(int a[][100], int cot, int dong)
{
int SoChinhPhuongMax = SoChinhPhuongDauTien(a,cot,dong);
if (SoChinhPhuongMax == -1)
{
return -1;
}
for (int i=0; i<dong;i++)
{
for (int j=0; j<cot; j++)
{
if (SoChinhPhuong(a[i][j])==1)
{

SoChinhPhuongMax = (SoChinhPhuongMax>a[i][j])?SoChinhPhuongMax:a[i][j];
}
}
}
return SoChinhPhuongMax;
}

383 Tìm số hòan thiện nhỏ nhất
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 SoHoanThienDauTien(int a[][100], int cot, int dong)
{
for (int i=0; i<dong; i++)
{
for (int j=0; j<cot; j++)
{
if (SoHoanThien(a[i][j])==1)
{
return a[i][j];
}
}
}

return -1;
}
int GiaTriCanTim(int a[][100], int cot, int dong)
{
int SoHoanThienMin = SoHoanThienDauTien(a,cot,dong);
if (SoHoanThienMin == -1)
{
return -1;
}
for (int i=0; i<dong;i++)
{
for (int j=0; j<cot; j++)
{
if (SoHoanThien(a[i][j])==1)
{
SoHoanThienMin = (SoHoanThienMin<a[i][j])?SoHoanThienMin:a[i][j];
}
}
}
return SoHoanThienMin;
}

384 Tìm các chữ số xuất hiện nhiều nhất trong ma trận
void ChuSo(int n, int b[])
{
int DonVi;
n = abs(n);
do
{
DonVi = n%10;

b[DonVi]++;
n=n/10;
} while (n>0);
}
void 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;
}
}
printf("Cac chu so xuat hien nhieu nhat: ");
for (i=0; i<10; i++)
{
if (b[ChuSoNhieuNhat] == b[i])
{
printf("%4d", i);
}
}

}

385 Liệt kê các dòng có tổng lớn nhất
int tong(int a[], int cot)
{
int s=0;
for (int i=0; i<cot; i++)
{
s+=a[i];
}
return s;
}
void LietKe(int a[][100], int cot, int dong)
{
int b[100];
for (int i=0; i<dong; i++)
{
b[i] = tong(a[i],cot);
}
//Tong Max
int Max = b[0];
for (i=1; i<dong; i++)
{
Max = (Max>b[i])?Max:b[i];
}
//Liet ke Tong Max
for (i = 0; i< dong ;i++)
{
if (Max == b[i])
{

printf("\nDong %d co tong ptu lon nhat la %d", i,Max);
}
}
}

386 Liệt kê các cột có tổng nhỏ nhất
void LietKe(int a[][100], int cot, int dong)
{
int b[100] = {0};
for (int i=0; i<cot; i++)
{
for (int j=0; j<dong; j++)
{
b[i]+=a[j][i];
}
}
//Tong Min
int Min = b[0];
for (i=1; i<cot; i++)
{
Min = (Min<b[i])?Min:b[i];
}
//Liet ke Tong Min
for (i = 0; i< cot ;i++)
{
if (Min == b[i])
{
printf("\nCot %d co tong ptu nho nhat la %d", i,Min);
}
}

}

387 Liệt kê các dòng có nhiều số chẵn nhất
void LietKe(int a[][100], int cot, int dong)
{
int dem[100] = {0};
for (int i=0; i<dong; i++)
for (int j=0; j<cot; j++)
if (a[i][j]%2==0)
dem[i]++;
int Max = dem[0];
for (i=1; i<dong; i++)
Max = (Max>dem[i])?Max:dem[i];
for (i = 0; i< dong ;i++)
if (Max == dem[i])
printf("\nDong %d co so chan nhieu nhat la %d", i,Max);
}

388 Liệt kê các dòng có nhiều số nguyên tố 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;
}
void LietKe(int a[][100], int cot, int dong)
{
int dem[100] = {0};
for (int i=0; i<dong; i++)
for (int j=0; j<cot; j++)
if (SoNguyenTo(a[i][j])==1)
dem[i]++;
int Max = dem[0];
for (i=1; i<dong; i++)
Max = (Max>dem[i])?Max:dem[i];
for (i = 0; i< dong ;i++)
if (Max == dem[i])
printf("\nDong %d co so nguyen to nhieu nhat la %d", i,Max);
}

389 Liệt kê các dòng có nhiều số hòan thiện nhất
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;
}

void LietKe(int a[][100], int cot, int dong)
{
int dem[100] = {0};
for (int i=0; i<dong; i++)

×