30/09/2018, 20:19

Lỗi khi chạy code: error: invalid use of array with unspecified bounds

Cho em hỏi đây là lỗi gì và cách sửa với ạ
[Error] E:cCa.c:39: error: invalid use of array with unspecified bounds
Em dùng hàm Mat để nhập vào mảng hai chiều A B và hàm Max để tìm Max của mảng tổng C

#include<stdio.h>
#include<conio.h>
int n;
void Mat(int);
int Max(int);
void main()
{
	int n,i,j;
	printf("Ma tran can tinh cap: ");
	scanf("%d",&n);
	int a[n][n],b[n][n],c[n][n];
	printf("
Nhap vao mang A
");
	Mat(a);
	printf("Nhap vao mang B
");
	Mat(b);
	for (i=0;i<=n;i++)
	for (j=0;j<=n;j++)
	c[i][j]=a[i][j]+b[i][j];
	printf("So lon nhat tren C la: %d",Max(c));
	getch();
}
void Mat(int S[][])
{
	int i,j;
	for (i=0;i<=n;i++)
	for (j=0;j<=n;j++)
	{
		printf("Nhap vao [%d][%d]: ");
		scanf("%d",&S[i][j]);
		printf("
");
	}
}
int Max(int A[][])
{
	int i,j,M;
	M=A[0][0];
	for (i=0;i<=n;i++)
	for (j=0;j<=n;j++)
	if(M<A[i][j]) M=A[i][j];
	return M;
}
Lê Anh Tuấn viết 22:34 ngày 30/09/2018

Bạn dán code lên mới đoán được bệnh của nó cho chính xác nhé. Đoán không nhầm thì bạn đang lấy 1 giá trị nằm ngoài giới hạn của mảng.

Hùng Nguyễn Việt viết 22:26 ngày 30/09/2018

E post code rồi a xem giúp e với

Lưu Thành Vương viết 22:23 ngày 30/09/2018

Code cả 1 tá lỗi.
+2 hàm Max Mat khai báo biến sai. 2 hàm thiếu biến n.
vd: void Mat(int S[][1000],int n){

}
Sửa lại cái trên :
void Mat(int S[][1000],int n);
Nếu chưa học con trỏ thì khai báo 2 mảng dư luôn đi cũng chẳng sao, bộ nhớ giờ nhiều mà.
vd: int a[1000][1000].
Với mảng thì i phải chạy từ [0,n).
vd for(int i=0; i< n;i++){

}
Mấy cái cơ bản vậy về sau thì nên tự đọc kĩ sách rồi tự tìm lỗi chứ đừng nên hở chút là hỏi như z.

Lưu Thành Vương viết 22:25 ngày 30/09/2018

À không để ý biến toàn cục, nếu có biến toàn cục n rồi thì không cần khai báo n trong hàm main.
Nên sửa lại là int main, để void thường bị 1 số trình biên dịch bắt lỗi.

Lê Anh Tuấn viết 22:26 ngày 30/09/2018

Bạn sai ở chổ là khai báo biến toàn cục n và trong hàm main bạn lại khai báo 1 biến cục bộ n. Vì vậy khi bạn sử dụng hàm, bạn đang sử dụng n toàn cục, bản thân n chứa giá trị rác vài không được gán giá trị đầu vào cho nó nên => lỗi. Vì bạn nhập là nhập n trong hàm main nên đó là n cục bộ trong hàm main thôi

Lê Anh Tuấn viết 22:32 ngày 30/09/2018

Cách khắc phục là bạn xóa khai báo n ở hàm main đi. Nhưng mình khuyên bạn nên hạn chế việc dùng biến toàn cục như vậy. Bạn nên khai báo n ở hàm main và truyền nó vào trong hàm để xử lý, như vậy sẽ dễ dàng quản lí hơn.

Bài liên quan
0