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;
}
Bài liên quan
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.
E post code rồi a xem giúp e với
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.
À 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.
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
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.