30/09/2018, 21:44
Lỗi sai về mảng
Mọi người chỉ lỗi sai giúp mình với. Đề bài : nhập xuất mảng,tìm vị trí số hoàn thiện cuối cùng của mảng
#include<conio.h>
#include<stdio.h>
#define MAX 100
void nhap_mang(int mang[],int &n)
{
do
{
printf("139: vi tri hoan thien cuoi cung
");
printf("nhap va so phan tu cho mang(0<mang<=100) :");
scanf_s("%d",&n);
if(n<0||n>MAX)
printf("kiem tra dieu kien va nhap lai !!!");
}
while(n<0||n>MAX);
for(int i=0;i<n;i++)
{
printf("mang[%d]:",i);
scanf_s("%d",&mang[i]);
}
}
void mang_o(int mang[],int n)
{
for(int i=0;i<n;i++)
{
printf(" %d ",mang[i]);
}
}
int de_bai(int mang[],int &n)
{
int i;
int tong=0;
for(i=n-1;i>0;i--)
{
mang[i];
for(int j=1;j<mang[i];j++)
{
if(mang[i]%j==0)
{tong=tong+j;}
}
}
if(tong==mang[i]);
return i;
}
int main()
{
int n;
int mang[MAX];
nhap_mang(mang,n);
mang_o(mang,n);
de_bai(mang,n);
printf("vi tri hoan thien cuoi cung la %d",de_bai(mang,n));
_getch();
return 0;
}
Bài liên quan
Bạn thử viết cho mình một cái hàm riêng dùng để kiểm tra số hoàn thiện xem?
Nếu là số hoàn thiện thì trả về 1, ngược lại trả về 0.
cái này nhét vào vòng for
mình thử và ko được bạn ak
ra khỏi vòng for thứ 2 thì cho lại tong=0 và cuối hàm return -1; nếu không có phần tử nào
Giờ mới để ý, bỏ ; chỗ if đi
5 số bạn nhập trong hình có số nào là hoàn thiện đâu ?
Mà bạn nên nói sơ về thuật toán của bạn xíu để người fix sẽ hiểu rõ và tìm lỗi nhanh hơn chứ như vầy tìm lâu lắm
Mình xin “phát biểu” thuật toán của mình nhé: Viết 1 hàm kiểm tra số hoàn thiện (
bool
). Sau đó trong hàmde_bai
bạn chỉ việc tạo 1 vòng for duyệt từ cuối mảng đến đầu mảng (for (int i = n - 1; i >= 0; i--)
) và trong vòng for đó, nếu phần tử đang xét là số hoàn thiện thìreturn n
Giai thích vì sao return i+1 vậy bạn
return i cũng dc. Cái này thì do mảng bắt đầu từ 0 mà theo người dùng thì bắt đầu từ 1 =))