با سلام یک برنامه نوشتم که اعداد کامل کوچکتر از1000رو نمایش بده اما نمیدونم مشکل از چیه!
1) شما برای بدست آوردن مقسوم علیه های متغیر i از متغیر f استفاده می کنید :
اما مقدار f رو که باید از 1 شروع بشه فقط یکبار در ابتدای کدتون 1 کرده اید :
به همین دلیل برای i های بعدی f مقدارش زیاد شده و دیگه f از 1 شروع نمیشه.
شما باید مقدار f رو پیش از حلقه while ای که برای f نوشته اید 1 کنید، نه ابتدای کد برنامه تا هر بار که
متغیر i جدیدی بررسی میشه f از 1 شروع بشه :
2) اگر موقع نمایش دادن عدد i به عنوان عدد کامل فاصله ای بین اعداد قرار ندهید به عدد بعدی می چسبه :
این خروجی 6 و 28 و 496 است، اما چون بین شون چیزی نمایش نداده اید می چسبند به هم.
بین شون کاراکتر فاصله نمایش دهید :
کد:
if (g == i)
cout << i << " ";
3) صفر کردن متغیر d اضافی و بی تاثیر است، چون مقدار d رو صریحا مشخص می کنید و به مقادیر قبلی اش
بستگی ندارد که لازم باشه 0 اش کنید.
کد:
d=0;g=0;
while(f<i){
d=i%f;
کد:
#include <iostream.h>
#include <conio.h>
int main()
{
clrscr();
int d, g, i = 1, f;
while(i < 1000)
{
g = 0;
f = 1;
while(f < i)
{
d = i % f;
if(d == 0)
g += f;
f++;
}
if (g == i)
cout << i << " ";
i++;
}
getch();
return 0;
}