Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Ispravka koda, potreban pomoc

[es] :: C/C++ programiranje :: Ispravka koda, potreban pomoc

[ Pregleda: 1936 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

stjepko95
student
student

Član broj: 328622
Poruke: 1
31.223.131.*



Profil

icon Ispravka koda, potreban pomoc30.03.2015. u 21:22 - pre 64 meseci
Program učitava prirodan broj n, a provjerava da li je jednak sumi
faktorijela svojih cifara.
Npr. 145 = 1! + 4! + 5! = 1 + 24 + 120 = 145

Code:
#include <stdio.h>
int main()
{
    int n1,n,br,k,p=1,sum=0,broj,b;
    do
    {
        printf("unesi prirodan broj\n");
        scanf("%d",&n);
    }
    while(n<0);
    br=n;k=1;broj=n;
   n1=n;
    {while(br!=0)
    {
        k++;
        br/=10;
    }
    while(k>0)
    {
        b=n%10;
        n/=10;
        for(p=1;b>0;b--)
        {
            p*=b;
        }
        sum+=p;
        k--;
    }
}
    if(sum==n1)
        printf("broj %d je jednak sumi faktorijal svojih cifara",n1);
        else
            printf("broj %d nije jednaki sumi faktorijela svojih cifara",n1);

    return 0;
}


Program radi ako postavim sumu na -1, negdje mi dodaje na sumu jos 1 i to mi ne valja pa ako neko zna u cemou je greska?

[Ovu poruku je menjao X Files dana 30.03.2015. u 23:08 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4872
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+624 Profil

icon Re: Ispravka koda, potreban pomoc30.03.2015. u 21:56 - pre 64 meseci
Umesto:
Citat:

while(k>0)

Probaj:
Code:

while(k>1)

Ako se ne varam, u tvom primeru imaš ČETIRI prolaza kroz trocifren broj, i stoga u poslednjoj iteraciji (i sumiranju) imaš još jednu jedinicu, koja potiče od p=1.

Kod ovakvih primera, uvek možeš da privremeno dodaš neki međukod tipa:
Code:
for(p=1;b>0;b--)
{
    p*=b;
}
printf("\nMEDJUREZULTAT: %d\n", p);

... pa se samo kaže gde je greška.

Inače, kod možeš bolje da optimizuješ, ne treba ti zasebna petlja koja određuje da li je broj jednocifren, dvocifren, trocifren, ...
 
Odgovor na temu

[es] :: C/C++ programiranje :: Ispravka koda, potreban pomoc

[ Pregleda: 1936 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.