Viết chương trình nhập ma trận thực A và tìm GTLN, GTNN trong ma trận

Đề bài: Viết chương trình nhập vào ma trận thực A sau đó tìm GTLN GTNN. In ra ma trận cùng kết quả tìm được ra màn hình.
Viết bằng ngôn ngữ C nhé. Ai giúp mình với

Người thảo luận để tìm ra cách giải hay cho một bài toán khó sẽ trở thành lập trình viên giỏi. Người hay hỏi bài tập thì không. Còn bạn thì sao?

@huongud đã có giải pháp nào chưa? Nên chia sẻ giải pháp cho mọi người cùng thảo luận trước.

1 Like

Cảm ơn câu nói của anh, em sẽ thử :disappointed:

1 Like
#include <stdio.h>
#include <conio.h>

int main()
{
    float a[50][50], x, max, min;
    int i, j, n, m;

    printf("Nhap so hang ma tran A: ");
    scanf("%d", &n);
    printf("Nhap so cot ma tran A: ");
    scanf("%d", &m);

    for(i=0; i<n; i++)
        for(j=0; j<m; j++)
        {
            printf("Nhap a[%d][%d]: ", i, j);
            scanf("%f", &x);
            a[i][j]=x;
        }
    printf("\nMa tran A:\n");
    for(i=0; i<n; i++)
    {
        for(j=0; j<m; j++)
            printf("%6.0f", a[i][j]);
        printf("\n");
    }
    max = min = a[0][0];
    for(i=0; i<n; i++)
        for(j=0; j<m;j++)
        {
            if(max<a[i][j])
                max = a[i][j];
            if(min>a[i][j])
                min = a[i][j];
        }
    printf("Max = %0.0f, Min = %0.0f", max, min);
    getch();
}

Cảm ơn a @ltd ^^
p/s: Đây là code của mình. Ai có cách nào tối ưu hơn, đơn giản hơn nữa ko mình xin được chỉ giáo

2 Likes
  1. List item
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #define MAX 100
    void NhapMang (float a[], int n)
    	{
    	for (int i =0;i<n;i++)
    	{
    		printf("\nNhap a[%d] = ",i);
    		scanf("%f",&a[i]);
    	}
    }
    void XuatMang (float a[], int n)
    {
    	for (int i =0;i<n;i++)
    	{
    		printf("%4.2f",a[i]);
    	}
    }
    float TimMax (float a[], int n)
    {
    	float Max = a[0];
    	for (int i =1; i<n;i++)
    	{
    		if (a[i] > Max)
    			Max = a[i];
    	}
    	return Max;
    }
    float TimMin (float a[], int n)
    {
    	float Min = a[0];
    	for (int i =1; i<n;i++)
    	{
    		if (a[i] < Min)
    			Min = a[i];
    	}
    	return Min;
    }
    void main ()
    {
    	float a[MAX];
    	int n;
    	do 
    	{
    		printf("\nNhap so luong phan tu : ");
    		scanf("%d",&n);
    		if (n < 0 || n > MAX)
    			printf("\nSo luong phan tu khong hop le. Xin kt lai !");
    	} while (n < 0 || n > MAX);
    	NhapMang(a,n);
    	XuatMang(a,n);
    	printf("\nMax = %f\nMin = %f",TimMax(a,n),TimMin(a,n));
    	getch();
    
    }

mình dùng hàm làm nhưng lỗi gì đăng mà chữ to đùng :frowning:

@vanhieu Hàm của mình dùng n rắc rối quá :frowning:

#include <stdio.h>
#include <conio.h>

void nhap(float (*a)[50], int n, int m)
{
    float x;
    int i, j;
    for(i=0; i<n; i++)
        for(j=0; j<m; j++)
        {
            printf("Nhap a[%d][%d]: ", i, j);
            scanf("%f", &x);
            a[i][j]=x;
        }
}
void in(float (*a)[50], int n, int m)
{
    int i, j;
    printf("\nMa tran A:\n\n");
    for(i=0; i<n; i++)
    {
        for(j=0; j<m; j++)
            printf("%6.0f", a[i][j]);
        printf("\n");
    }
}
void maxmin(float (*a)[50], int n, int m)
{
    float max, min;
    int i,j;
    max=min=a[0][0];
    for(i=0; i<n; i++)
        for(j=0; j<m; j++)
        {
            if(max<a[i][j])max=a[i][j];
            if(min>a[i][j])min=a[i][j];
        }
    printf("Max = %0.0f, Min = %0.0f", max, min);
}
int main()
{
    float a[50][50];
    int n, m;
    printf("Nhap so hang ma tran A: ");scanf("%d", &n);
    printf("Nhap so cot ma tran A: ");scanf("%d", &m);
    nhap(a, n, m);
    in(a, n, m);
    maxmin(a, n, m);
    getch();
}

Mà code của cậu là tìm min max của mảng 1 chiều rồi. Của mình 2 chiều cơ

1 Like

bạn dùng con trỏ cấp 21 luôn đi :slight_smile:

cấp 21 là ntn bạn, mình chưa hiểu

con trỏ cấp 2 sorry bạn mình viết nhầm

con trỏ cấp 2 chắc mình chưa đc học, mình ms nhập môn C thôi :smiley:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?