Thứ Hai, 15 tháng 6, 2015

[C++] Mãng 2 chiều - Bài 66

Viết chương trình nhập vào ma trận vuông A[n][n].

(a) Hãy đếm số phần tử có giá trị lớn nhất (Max) và nhỏ nhất (Min) trong ma trận Am đồng thời hãy xuất ra màn hình các vị trí (i,j) với A(i,j) = Max, hoặc A(i,j)=Min.


(b) Trong ma trận A hãy thay thế giá trị của các phần tử có giá trị bằng Max hoặc bằng Min bằng trung bình cộng của Max và Min.
Bài giải
Tải File CPP: http://codepad.org/BRfEth1B/raw.cpp
#include<stdio.h>
int nhapmatran(float a[][4], int n)
{
    for(int i=1; i<=n; i++)
        for(int j=1; j<=n; j++)
        {
            printf("a[%d][%d]= ", i, j);
            scanf("%f", &a[i][j]);
        }
}
int xuatmatran(float a[][4], int n)
{
    for(int i=1; i<=n; i++)
    {
        for(int j=1;j<=n; j++)
            printf("%.1f\t", a[i][j]);
        printf("\n");
    }
}
int timmax(float a[][4], int n)
{
    int max;
    //Tim gia tri max
    max=a[1][1];
    for(int i=1; i<=n; i++)
    {
        for(int j=0;j<n; j++)
        {
            max=max>a[i][j+1]?max:a[i][j+1];
        }
    }
    //Tim vi tri
    for(int i=1; i<=n; i++)
        for(int j=1;j<=n; j++)
            if(a[i][j]==max)
            {
                printf("Gia tri max cua ma tran la %d o vi tri a[%d][%d]\n", max, i, j);
            }
    return max;
}
int timmin(float a[][4], int n)
{
    int min;
    min=a[1][1];
    //Tim min
    for(int i=1; i<=n; i++)
    {
        for(int j=0;j<n; j++)
        {
            min=min<a[i][j+1]?min:a[i][j+1];
        }
    }
    //Tim max
    for(int i=1; i<=n; i++)
        for(int j=1;j<=n; j++)
            if(a[i][j]==min)
            {
                printf("Gia tri min cua ma tran la %d o vi tri a[%d][%d]\n", min, i, j);
            }
    return min;
}
int thaydoi(float a[][4], int n, float tong, int max, int min)
{
    for(int i=1; i<=n; i++)
        for(int j=1;j<=n; j++)
        {
            if(max==a[i][j])
            {
                a[i][j]=tong;
            }
            if(min==a[i][j])
            {
                a[i][j]=tong;
            }
        }
}

int main()
{
    int n;
    printf("Nhap ma tran vuong n: "); scanf("%d", &n);
    float a[n][4];
    nhapmatran(a, n);
    xuatmatran(a, n);
    int max, min;
    float tong;
    max=timmax(a, n);
    min=timmin(a, n);
    tong=(1.0*(max+min))/2;
    printf("\ntong %.2f\n\n", tong);
    thaydoi(a, n, tong, max, min);
    xuatmatran(a, n);

}

Giới Thiệu

Trang Blog này mình tạo để đăng những bài tập từ dễ đến khó của môn lập trình C...