مشکل:برنامه اعداد کامل کوچکتر از 1000

mhabat

Member
با سلام یک برنامه نوشتم که اعداد کامل کوچکتر از1000رو نمایش بده اما نمیدونم مشکل از چیه!
سورس:
کد:
#include<iostream.h>
#include<conio.h>
int main() {  clrscr();
int d,g=0,i=1,f=1;
while(i<1000){
d=0;g=0;
while(f<i){
d=i%f;
if(d==0)
g+=f;
f++;}
if(g==i)
cout<<i;
i++;
}
getch(); return 0; }
خیلی ممنون
بدرود
 

the_king

مدیرکل انجمن
با سلام یک برنامه نوشتم که اعداد کامل کوچکتر از1000رو نمایش بده اما نمیدونم مشکل از چیه!
1) شما برای بدست آوردن مقسوم علیه های متغیر i از متغیر f استفاده می کنید :
کد:
        while(f < i)
        {
اما مقدار f رو که باید از 1 شروع بشه فقط یکبار در ابتدای کدتون 1 کرده اید :
کد:
int d,g=0,i=1,f=1;
به همین دلیل برای i های بعدی f مقدارش زیاد شده و دیگه f از 1 شروع نمیشه.

شما باید مقدار f رو پیش از حلقه while ای که برای f نوشته اید 1 کنید، نه ابتدای کد برنامه تا هر بار که
متغیر i جدیدی بررسی میشه f از 1 شروع بشه :
کد:
        f = 1;
        while(f < i)
        {

2) اگر موقع نمایش دادن عدد i به عنوان عدد کامل فاصله ای بین اعداد قرار ندهید به عدد بعدی می چسبه :
کد:
628496
این خروجی 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;
}
 

جدیدترین ارسال ها

بالا