[ sredina @ 14.12.2006. 22:52 ] @
Zanima me kako da napisem program za izracunavanje faktorijala za vece brojeve posto mi za brojeve vece od 16 daje neke cudne rezultate? Sta je pogresno? Hvala.

Evo koda koji sam napisao:

Code:

#include <stdio.h>
int Factorial(int broj);

int main(void)
{
    int broj;
    printf("Unesite pozitivan celi broj: "); 
    scanf("%d",&broj); 
    printf("Njegova faktorijal vrednost je: %d \n", Factorial(broj));

    system("pause");    
}
    
    int Factorial ( int broj)
    {
    int brojac = 2;
    long int faktorijal = 1;
    while (brojac <= broj) 
          {
          faktorijal = faktorijal * brojac;
          brojac = brojac + 1;
          }
    return faktorijal;
    }
[ #Ninja# @ 14.12.2006. 23:30 ] @
Vrijednost faktoriela se ne može zapisati u long int. Moraš naći klasu za baratanje beskonačnim cijelim brojevima.
[ komar023 @ 19.12.2006. 12:59 ] @
Vidi se da si skoro presao sa PASCAL-a jer ni jedan iskusan C programer nece nikad napisati

faktorijal = faktorijal * brojac;
brojac = brojac + 1;

vec

faktorijal*=brojac++;
[ X Files @ 19.12.2006. 15:46 ] @
http://www.elitesecurity.org/t233524-programski-jezik
[ NoBot @ 26.12.2006. 21:15 ] @
Stavi faktorijel u double preciznost
[ blaza @ 26.12.2006. 21:24 ] @
Jel' dosta do 1000! ?
http://www.elitesecurity.org/p739964
Lako se prevodi u C.
[ Nedeljko @ 29.12.2006. 17:08 ] @
Citat:
komar023: Vidi se da si skoro presao sa PASCAL-a jer ni jedan iskusan C programer nece nikad napisati

faktorijal = faktorijal * brojac;
brojac = brojac + 1;

vec

faktorijal*=brojac++;

Ma nemoj. Ispade da je jedina prednost C-a nad Paskalom mogućnost pisanja nečitljivih programa. Mogao bih eventualno da napišem nešto poput
Code:
fakt *= br;
br++;

OK, možda bi ti to napisao u jednom redu, ali je izraz "nijedan iskusan C programer neće nikad napisati" najblaže rečeno preteran, pogotovu ako taj iskusan C programer radi na nekom većem projektu, gde je čitljivost koda vrlo bitna.

[Ovu poruku je menjao Nedeljko dana 30.12.2006. u 00:00 GMT+1]