[ peca89bg @ 06.07.2009. 15:04 ] @
ovako, hocu da uradim program koji ce da mi racuna sumu faktorijela od 1 do n, primer za unet broj 5 da izracnuna: 1! + 2! + 3! + 4! + 5!

#include <stdio.h>
int suma (int n)
{
int rez = 0, i;
for (i = 1; i <= n; i++)
rez += i;
return rez;
}

main()
{

int br, s, fak;
fak = 0;
printf("Unesi broj: \n");
scanf("%d", &br);
for (s; s >= br; s--)
fak *= s;
printf("suma faktorijela je: %d.\n", suma(fak));
}


kada ga prevedem i startujem izbaci mi da e suma faktorijela = 0

jel moze neko da mi pomogne? plsssssssss
[ lestrigonac @ 06.07.2009. 16:09 ] @
Prva greska je sto si stavio da je fak=0 i non stop mnozis sa nulom i to je naravno nula :)
Nisam ni pokusao da ispravim ovaj tvoj kod, posto mi se cini da ti je malko pogresan nacin na koji si radio :) Razmisli samo sta ti uradis sa ovom funkcijom koju si napravio?

Code:

    #include<stdio.h>
    main(){
    
    int suma = 0, br;
    int i;

    printf("Unesite broj :");
    scanf("%d", &br);

    for(i=1; i<=br; i++){
        int z;
        int ab = 1;
        for(z=1; z<=i; z++)
            ab  *= z;
        suma += ab;
        }
    printf("Suma je: %d", suma);

    }


Kod je na brzinu i iz glave, mozda malo preterao sa promenljivima, ali nemam bas vremena sada, sredi kod da lici vise na c i jos razmisli o problemu.... Pokusaj da koristis dibager da vidis sta se desava u samom kodu, kako se koja premenljiva menja :)

Pozdrav...
[ Mihajlo Cvetanović @ 06.07.2009. 16:12 ] @
Razlog zbog kojeg ti prikazuje 0 je taj što si stavio da je fak = 0. Pretpostavljam da treba da stoji 1, a i promenljiva s ti nije čak ni inicijalizovana. Ali čak i kad to ispraviš nećeš dobiti tačan rezultat. Da bi izračunao sumu faktorijela moraš da radiš naizmenično jedno množenje i jedno sabiranje, to je elegantnije rešenje. Druga opcija je da računaš svaki faktorijel posebno, i da rezultat dodaješ glavnom zbiru, to je očiglednije rešenje. Kod tebe nema ni jedno ni drugo, nego ide prvo jedan faktorijel, pa onda nekakvo čudno sabiranje.
[ lestrigonac @ 06.07.2009. 17:13 ] @
On je racunao sve faktorijele s' tim da je sve njih pogubio i ostao mu samo poslednji koji je isto nula, jer je fak=0; I kada to ispravi nece dobiti ono sto treba kao sto si rekao jer ce on odredjenji broj puta sabirati nesto sto nikako nije to sto mu treba :)

Pozdrav...
[ peca89bg @ 06.07.2009. 17:29 ] @
Code:

#include <stdio.h>
int faktorijel (int g)
{
  int rez = 1;
  for (g; g >=1; g--)
    rez *= g;
  return rez;
}

main()
{

  int n, br, brojac, suma, s;
  printf("Unesi broj:\n");
  scanf("%d", &n);
  printf("Unesite %d celih brojeva: \n", n);
  suma = 0;
    for (brojac = 1; brojac <=n; brojac++)
      {
    scanf("%d", &br);
    s = faktorijel(br);
    suma += s;
      }

  printf("Faktorijel zbira za %d brojeva koje ste uneli je: %d.\n", n, suma);
  if (suma%2 == 0)
    printf("Dobijeni zbir je paran.\n");
  else 
    printf("Dobijen zbir je neparan.\n");

}


evo resio sam problem!

[Ovu poruku je menjao X Files dana 07.07.2009. u 11:24 GMT+1]