Chương trình tính tổng mảng 2 chiều bị sai

Ai giúp mình lỗi sai ở chương trình tính tổng mảng 2 chiều này với?

#include <stdio.h>
#include <conio.h>
#define MAX 100

void input(float);
void output(float);
void add(float,float,float);
float max(float);
int in;
float max(float fa[MAX][MAX])
	{
		float fmax;
		fmax=fa[0][0];		
		for(int i=0;i<in;i++)
			for(int j=0;j<in;j++)
				{
					if(fmax<fa[i][j])	
						fmax=fa[i][j];	
				}
		return fmax;					
	}

void input(float fa[MAX][MAX])
	{
		for(int i=0;i<in;i++)
			for(int j=0;j<in;j++)
				{
					printf("Nhap vao phan tu[%d][%d]:",i,j);
					scanf("%f",&fa[i,j]);
				}
	}

void output(float fa[MAX][MAX])
	{
		for(int i=0;i<in;i++)
			{
				for(int j=0;j<in;j++)
					printf("%5.2f",fa[i][j]);
				printf("\n");
			}
	}
void add(float fa[MAX][MAX],float fb[MAX][MAX],float fc[MAX][MAX])
	{
		for(int i=0;i<in;i++)
			for(int j=0;j<in;j++)
			{
				fc[i,j]=fa[i,j]+fb[i,j];
			}
	}

Main()
	{
		float fa[MAX][MAX],fb[MAX][MAX],fc[MAX][MAX];
		printf("Nhap vao cap ma tran:");
		scanf("%d",&in);
		printf("Nhap lieu ma tran a:\n");
		input(fa);
		printf("Nhap lieu ma tran b:\n");
		input(fb);
		printf("Nhap lieu ma tran c:\n");
		input(fc);
		add(fa,fb,fc);
		printf("Ma tran a:\n");
		output(fa);
		printf("Ma tran b:\n");
		output(fb);
		printf("Ma tran c:\n");
		output(fc);		
		printf("So lon nhat cua ma tran c la:%5.2f.\n",max(fc));
		getch();
	}

void add(float fa[MAX][MAX],float fb[MAX][MAX],float fc[MAX][MAX])

hàm này chạy xong thì chẳng có gì thay đổi cả
google: pass by reference c++

#include <stdio.h>
#include <conio.h>
#define MAX 100

void input(float);
void output(float);
void add(float,float,float);
float max(float);
int in;
float max(float fa[MAX][MAX])
	{
		float fmax;
		fmax=fa[0][0];		
		for(int i=0;i<in;i++)
			for(int j=0;j<in;j++)
				{
					if(fmax<fa[i][j])	
						fmax=fa[i][j];	
				}
		return fmax;					
	}

void input(float fa[MAX][MAX])
	{
		for(int i=0;i<in;i++)
			for(int j=0;j<in;j++)
				{
					printf("Nhap vao phan tu[%d][%d]:",i,j);
					scanf("%f",&fa[i][j]); // sai cai nay.
				}
	}

void output(float fa[MAX][MAX])
	{
		for(int i=0;i<in;i++)
			{
				for(int j=0;j<in;j++)
					printf("%5.2f",fa[i][j]);
				printf("\n");
			}
	}
void add(float fa[MAX][MAX],float fb[MAX][MAX],float fc[MAX][MAX])
	{
		for(int i=0;i<in;i++)
			for(int j=0;j<in;j++)
			{
				fc[i][j]=fa[i][j]+fb[i][j];//sai cai nay
			}
	}

int main()//sai cai nay
	{
		float fa[MAX][MAX],fb[MAX][MAX],fc[MAX][MAX];
		printf("Nhap vao cap ma tran:");
		scanf("%d",&in);
		printf("Nhap lieu ma tran a:\n");
		input(fa);
		printf("Nhap lieu ma tran b:\n");
		input(fb);
//		printf("Nhap lieu ma tran c:\n");//cai nay bo di.
//		input(fc);
		add(fa,fb,fc);
		printf("Ma tran a:\n");
		output(fa);
		printf("Ma tran b:\n");
		output(fb);
		printf("Ma tran c:\n");
		output(fc);		
		printf("So lon nhat cua ma tran c la:%5.2f.\n",max(fc));
		getch();
		return 0;//them cai nay.
	}

Những chỗ nào sai thì mình đã xược chéo cho bạn nhìn dễ rồi đó!

Cảm ơn bạn nhiều, cái này hồi chiều mình tìm ra rồi.
Cho mình hỏi thêm là:

  1. chỗ chương trình chính int main() hay main() mình thấy như nhau, bạn có biết sự khác nhau không?
  2. Cuối chương trình ko có giá trị trả về thì có cần thiết phải return 0; không?

theo mình thì dùng int main hàm trả về giá trị thì nó thông dụng hơn, còn return 0 bạn bỏ đi thì kết quả vẫn vậy nhưng theo cấu trúc thì thêm return nó đầy đủ.

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