Đáp Án Bài 6.3





Bài 6.3
Các bài tập về mảng 2 chiều:
Viết chương trình cho phép người dùng nhập vào từ bàn phím một ma trận các số nguyên (Aij)m x n. Sau đó:
a. Tính tổng, trung bình các phần tử của ma trận.
b. Tìm max và in ra vị trí của các phần tử có giá trị = max.
c. Tìm min và in ra vị trí của các phần tử có giá trị = min.
d. Tìm xem hàng nào trong ma trận có tổng lớn nhất (hoặc nhỏ nhất).
e. Tìm xem cột nào trong ma trận có tổng nhỏ nhất (hoặc lớn nhất).
f. Tìm và in ra tất cả các điểm yên ngựa có trong ma trận A (một phần tử được gọi là điểm yên ngựa nếu nó vừa là min trên dòng chứa nó, vừa là max trên cột chứa nó).
g. Sắp xếp lại ma trận sao cho trên mỗi dòng, các phần tử được xếp theo thứ tự tăng dần (hoặc giảm dần).
h. Sắp xếp lại ma trận sao cho trên mỗi cột, các phần tử được xếp theo thứ tự tăng dần (hoặc giảm dần).


//Câu 6.3(a,b,c,d,e):
#include <stdio.h>

//===chuong trinh chinh===
int main(void)
{
 int A[10][10],m,n,i,j,tongPT=0,max,min,maxHang,hangMax,tongHang=0,minCot,cotMin,tongCot=0;
 float TBC;
 
 printf("Nhap vao so hang cua ma tran: ");scanf("%d",&m);
 printf("Nhap vao so cot cua ma tran: ");scanf("%d",&n);
 printf("\nNhap vao cac phan tu cua ma tran:\n");
 for(i=0;i<m;i++)
  for(j=0;j<n;j++)
  {
   printf("Nhap A[%d][%d]: ",i+1,j+1);
   scanf("%d",&A[i][j]);
  }
 //Dua ra ma tran ket hop tinh tong cac phan tu
 printf("\nMa tran da nhap la:\n");
 for(i=0;i<m;i++)
 {
  for(j=0;j<n;j++)
  {
   printf("%-5d",A[i][j]);
   tongPT+=A[i][j];
  }
  printf("\n");
 }
 
 //a. Tính tổng, trung bình các phần tử của ma trận.
 TBC = (float)tongPT/(m*n);
 printf("\nTong cac phan tu cua ma tran la: %d, TBC cac phan tu cua ma tran la: %.2f\n",tongPT,TBC);
 
 //b. Tìm max và in ra vị trí của các phần tử có giá trị = max.
 printf("\n");
 max=A[0][0];
 for(i=0;i<m;i++)
  for(j=0;j<n;j++)
   if(A[i][j]>max) max = A[i][j];
  
 for(i=0;i<m;i++)
  for(j=0;j<n;j++)
   if(A[i][j]==max) printf("Max = %d tai vi tri A[%d][%d]\n",max,i+1,j+1);
    
 //c. Tìm min và in ra vị trí của các phần tử có giá trị = min.
 printf("\n");
 min=A[0][0];
 for(i=0;i<m;i++)
  for(j=0;j<n;j++)
   if(A[i][j]<min) min = A[i][j];
  
 for(i=0;i<m;i++)
  for(j=0;j<n;j++)
   if(A[i][j]==min) printf("Min = %d tai vi tri A[%d][%d]\n",min,i+1,j+1);

 //d. Tìm xem hàng nào trong ma trận có tổng lớn nhất (hoặc nhỏ nhất).
 maxHang=0;//Khoi tao maxHang=0;
 //Gán maxHang = hàng đầu tiên
 for(i=0;i<1;i++)
  for(j=0;j<n;j++)
  {
   maxHang += A[i][j];
   hangMax = i+1;
  }
 //Kiem tra xem hang nao co tong lon nhat
 for(i=1;i<m;i++)
 {
  for(j=0;j<n;j++)
  {
   tongHang+=A[i][j];
   if(tongHang>maxHang)
   {
    maxHang = tongHang;
    hangMax = i+1;
   }
  }
  tongHang=0;
 }
 printf("\nHang %d trong ma tran co tong lon nhat va = %d\n",hangMax,maxHang);
 
 //e. Tìm xem cột nào trong ma trận có tổng nhỏ nhất (hoặc lớn nhất).
 minCot=0;//Khoi tao minCot=0;
 //Gán minCot = cot đầu tiên
 for(i=0;i<m;i++)
  for(j=0;j<1;j++)
  {
   minCot += A[i][j];
   cotMin = j+1;
  }
 //Kiem tra xem cot nao co tong lon nhat
 for(i=0;i<m;i++)
 {
  for(j=1;j<n;j++)
  {
   tongCot+=A[i][j];
   if(tongCot>minCot)
   {
    minCot = tongCot;
    cotMin = j+1;
   }
  }
  tongCot=0;
 }
 printf("\nCot %d trong ma tran co tong lon nhat va = %d\n",cotMin,minCot);
 
 //g. Sắp xếp lại ma trận sao cho trên mỗi dòng, các phần tử được xếp theo thứ tự tăng dần (hoặc giảm dần).
 
 
 //h. Sắp xếp lại ma trận sao cho trên mỗi cột, các phần tử được xếp theo thứ tự tăng dần (hoặc giảm dần).
 
 return 0;
}
//===dinh nghia ham===
//Câu 6.3.f:(Chưa Xong)
#include <stdio.h>
int main(void)
{
 int a[10][10], m, n, i, j;
 
 printf("Nhap vao so hang m = ");
 scanf("%d",&m);
 printf("Nhap vao so cot n = ");
 scanf("%d",&n);
 
 printf("Nhap vao cac phan tu cua ma tran:\n");
 for(i=0;i<m;i++)
  for(j=0;j<n;j++)
  {
   printf("a[%d,%d] = ",i,j);
   scanf("%d",&a[i][j]);
  }
 
 printf("Ma tran da nhap la:\n");
 for(i=0;i<m;i++)
 {
  for(j=0;j<n;j++)
   printf("%d\t",a[i][j]);
  printf("\n");
 }
 
 //Tim diem yen ngua
  
 return 0;
}
//Câu 6.3.g:
#include <stdio.h>
int main(void)
{
 int a[10][10], m, n, i, j, k, temp;
 
 printf("Nhap vao so hang m = ");
 scanf("%d",&m);
 printf("Nhap vao so cot n = ");
 scanf("%d",&n);
 
 printf("Nhap vao cac phan tu cua ma tran:\n");
 for(i=0;i<m;i++)
  for(j=0;j<n;j++)
  {
   printf("a[%d,%d] = ",i,j);
   scanf("%d",&a[i][j]);
  }
 
 printf("Ma tran da nhap la:\n");
 for(i=0;i<m;i++)
 {
  for(j=0;j<n;j++)
   printf("%d\t",a[i][j]);
  printf("\n");
 }
 
 //Sap xep lai theo dong ma cac phan tu tang dan
 for(i=0;i<m;i++)
  for(j=0;j<n-1;j++)
   for(k=j+1;k<n;k++)
    if(a[i][j]>a[i][k])
    {
     temp = a[i][j];
     a[i][j] = a[i][k];
     a[i][k] = temp;
    }
 printf("Ma tran da sap xep theo dong la:\n");
 for(i=0;i<m;i++)
 {
  for(j=0;j<n;j++)
   printf("%d\t",a[i][j]);
  printf("\n");
 }
  
 return 0;
}
//Câu 6.3.h:
#include <stdio.h>
int main(void)
{
 int a[10][10], m, n, i, j, k, temp;
 
 printf("Nhap vao so hang m = ");
 scanf("%d",&m);
 printf("Nhap vao so cot n = ");
 scanf("%d",&n);
 
 printf("Nhap vao cac phan tu cua ma tran:\n");
 for(i=0;i<m;i++)
  for(j=0;j<n;j++)
  {
   printf("a[%d,%d] = ",i,j);
   scanf("%d",&a[i][j]);
  }
 
 printf("\nMa tran da nhap la:\n");
 for(i=0;i<m;i++)
 {
  for(j=0;j<n;j++)
   printf("%d\t",a[i][j]);
  printf("\n");
 }
 
 //Sap xep lai theo cot sao cho cac phan tu tang dan
 for(i=0;i<n-1;i++)
  for(j=i+1;j<n;j++)
   for(k=0;k<m;k++)
    if(a[i][k]>a[j][k])
    {
     temp = a[i][k];
     a[i][k] = a[j][k];
     a[j][k] = temp;
    }
 printf("\nMa tran da sap xep theo cot la:\n");
 for(i=0;i<m;i++)
 {
  for(j=0;j<n;j++)
   printf("%d\t",a[i][j]);
  printf("\n");
 }
  
 return 0;
}
Coding: Hải Dớ



Đăng nhận xét

Cảm Ơn Bạn Đã Để Lại Bình Luận

 

Quản Trị Viên

Lượt xem

Lên Trên