01/10/2018, 16:35
Liệt kê số hoàn hảo trong mảng 2 chiều
Cho em hỏi đoạn code này sai ở đâu?
#include<stdio.h>
void HamNhap(int a[][100], int &n, int &m)
{
int i, j;
printf("Cho biet so dong va cot cua mang: ");
scanf("%d", &n);
scanf("%d", &m);
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
printf("Gia tri phan tu a[%d][%d]=", i, j);
scanf("%d", &a[i][j]);
}
}
int main()
{
int a[100][100],n,m,i,j,k;
HamNhap(a,n,m);
int sum=0;
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
{
if(a[i][j]<0)
return 0;
for(k=1;k<a[i][j];k++)
{
if(a[i][j]%k==0)
sum=sum+k;
}
if(sum==a[i][j])
{
printf("%d",a[i][j] );
}
}
}
Bài liên quan
Bạn muốn hỏi gì ?? Với cả Markdown code nhé
À mình vửa chỉnh lại rồi, cảm ơn bạn đã nhắc
Bạn nên nêu rõ lỗi gặp phải như thế nào, tốt nhất là kèm theo cả thông báo lỗi.
Nhìn qua code của bạn thì thấy một số điểm sau:
void HamNhap(int a[][100], int &n, int &m)
[/quote]
Trong C không có truyền tham chiếu int &n, int &m, bạn có thể thay thế bằng con trỏ, int *n , int *m. Trong hàm main bạn khai báo thừa, hai lần biến i, j. Khi khai báo biến int i/ int j trong vòng lặp for thì hai biến này sẽ chỉ tồn tại trong khối lệnh của vòng for. Còn hai biến i, j ở trong lệnh khai báo đầu tiên của hàm main không hề được sử dụng.
Nó không báo lỗi nhưng khi mình nhập vào thì nó không ra kết quả bạn ơi, và mình để int&n, int&m vẫn chạy được vì mình để chương trình là cpp nên vẫn chạy được, có vấn đề là khi mình bỏ dấu & đi thì kết quả nó ra khá tào lao nên mình cũng không biết phải sửa thế nào
Quên trả giá trị sum về 0 sau mỗi lần kiểm tra
Nếu bạn viết chương trình C++ thì có thể dùng tham chiếu, tuy nhiên nếu viết bằng C thì bạn nên dùng con trỏ cũng có thể cho kết quả tương đương.
Tham khảo