[ sneijder @ 19.01.2009. 17:00 ] @
pozdrav svima
s obzirom da sam pocetnik u programiranju i ne kuzim dosta toga, uz pomoc primjera, skripti sam pokusao rijesit jedan zadatak.
vjerujem da dosta toga ne valja, pa ako neko moze ispravit sto ne valja i ukratko objasnit zasto to nije dobro.

hvala svima unaprijed

zadatak je:

Napisati program koji ce unijeti cijeli broj N sa tipkovnice. N mora biti pozitivan broj,
a unos treba ponavljati sve dok se ne unese broj koji zadovoljava taj kriterij. Nakon
unosa izracunati i ispisati na ekran faktorijel tog broja.
Code:

#include <stdio.h>

int main()
{
    int N;
    int i;
    int nFact = 1;
 
    do
    {
        nFact *= i;
        i++;
    }while (i <= N);
    
}
    int N;
    
    while (1)
    {
          cout << "Unesite broj za koji zelite izracunati faktorijel" << endl;
    }
    
    cout << Faktorijel broja iznosi: " << endl;
    
    getchar();
    return0;

}


[Ovu poruku je menjao X Files dana 19.01.2009. u 21:25 GMT+1]
[ Goran Rakić @ 19.01.2009. 17:30 ] @
Evo šeme algoritma za tvoj zadatak. Hajde probaj po ovome da napišeš program. Obe petlje su do..while pošto je uslov na kraju.

[ sneijder @ 19.01.2009. 17:58 ] @
evo nest sam probao, muljao...pokrene mi se program al nema nikakvog texta. ajde pomagaj kolega. ne kuzim ti ja bas to

Code:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int N;
    int nFact = 1;
    do
    {
        cin >> N;
        }while (N>0);
        
        do
        {
               nFact *= 1;
               N--;
               
               }while (N>0);

               {

               cout << "Unesite broj za koji zelite izracunati faktorijel: " << endl;
              
        }

               cout << "Faktorijel broja iznosi: " << endl;
               
    getchar();

}



EDIT: X Files : Molim Vas da zbog preglednosti, kod upisujete između tag-ova predviđenih za to:

[code]
int main ( int argc, char *argv[] )
{
// ...
return 0;
}
[/code]

[Ovu poruku je menjao X Files dana 19.01.2009. u 21:26 GMT+1]
[ marko1981 @ 19.01.2009. 18:02 ] @
Možda si i dobro izračunao, ali gde si odštampao rezultat?
[ X Files @ 19.01.2009. 20:36 ] @
Na osnovu vec ponudjenog algoritma, pokusaj ovo /netestirano/
Code:

#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
    int N;
    do
    {
        cout << "Upisite N: ";
        cin >> N;
    } while ( N < 1 );


    int nFact = 1;
    do
    {
        nFact *= N;
        N--;

    } while ( N>0 );

    cout << "Faktorijel broja iznosi: " << nFact << endl;

    getchar();
    return 0;
}

[ Goran Rakić @ 19.01.2009. 22:49 ] @
@sneijder Nisi pažljiv i brzaš, a to se u programiranju ne prašta. Vidiš da si promašio uslov za izlazak iz prve petlje (program je u petlji dok god se unosi vrednost veća od nule, a treba obrnuto, "N <= 0"). Takođe onaj ispis "unesite broj" valjda treba da stoji pre učitavanja (cin >> N). U faktorijelu, zašto množiš sa 1 kada u algoritmu lepo piše da se množi sa N? Na kraju nisi ispisao vrednost faktorijela (nedostaje ti "<< nFakt" pre kraja cout naredbe).
[ sneijder @ 19.01.2009. 23:56 ] @
gorane hvala puno na pomoci, izmijenio sam to. al sad sam ostao bez jedne petlje, program se pokrene i bez nje. jel ona uopce potrebna??
e sad, program se pokrene, upisem neki broj, i on se odmah zatvori. jel to isto mora tako biti ili? ispricavam se sto gnjavim tolko al stvarno sam tek poceo radit s tim, pokusavam nest skuzit, a taj projekt mi je uvjet za izlazak na ispit, pa ako moze pomoc.



#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int N;
int nFact = 1;

do
{
nFact *= N;
N--;

}while (N <= 0);

{
cout << "Unesite broj za koji zelite izracunati faktorijel: " << endl;
cin >> N;
}

cout << "Faktorijel broja iznosi: " << nFact << endl;

getchar();

}
[ execution @ 26.01.2009. 20:16 ] @
zasto stavljas while N<=0... ti trazis dok ti je vece

evo, npr. ovako radi

Code:

#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
    int N;
    int nFact = 1;
    cout << "Unesite broj za koji zelite izracunati faktorijel: " << endl;
    cin >> N;
do{
    nFact *= N;
    N--;

}while (N != 0);


cout << "Faktorijel broja iznosi: " << nFact << endl;


system ("pause");
return 0;
}

[ g00ran @ 20.04.2009. 14:15 ] @
Da se pridruzim sa malim zakasnjenjem u rjesavanju ovog zadatka.
Predlozena rjesenja imaju ogranicenje u broju za koji se trazi faktorijel (mislim da je do 19) u ovom mom primjeru je ogranicenje na 38, meni je potrebno da izbjegnem ovo ogranicenje kako to izvesti ??
Neke instrukcije su kao da se rezultat ispisuje kao jednodimenzionalni niz ??? ako neko uspije da ovo ogranicenje prebrodi na ovaj nacin zamolio bi ga da sto prije postavi rjesenje Hvala

Moj prijedlog

Code:

#include <cstdlib>
#include <iostream>
#include <iomanip.h>
/
using namespace std;
// Zadatak  Izracunati faktoriel nenegativnog broja


int main()
{
  int N,M;
 long double fakt;
    ponovi:
    cout<<"Unesite cijeli nenegativni broj za koji zelite izracunati faktorijel: "<<endl;
    cin>>N;
    cout<<endl;
    if (N<0)
    {
             cout<<"Unijeti broj mora biti veci od 0"<<endl;
             goto ponovi;
             }
               
    fakt=1;
    M=N;
    while (M>1)
    {
            fakt=fakt*M;
            M=M-1;
           
    }
     cout<<fixed<<"Faktorijel broja "<<setprecision(0)<< N<<" je: "<<fakt<<endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
    
}



pozdrav
[ radoica @ 20.04.2009. 20:05 ] @
Potrebna ti je biblioteka za velike cele brojeve (Big Integer)

Nesto ovako (prvi rezultat koji je izabacio google) http://sourceforge.net/projects/cpp-bigint/