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

C++ > N faktorijel

[es] :: C/C++ programiranje :: C++ > N faktorijel

[ Pregleda: 14458 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

addo19

Član broj: 53993
Poruke: 19
*.dlp153.bih.net.ba.

Sajt: www.abdagic.com


Profil

icon C++ > N faktorijel27.04.2005. u 13:03 - pre 231 meseci
Zdravo,

Znali neko gdje se moze naci primjer n! > n faktorijela

Npr, ako neko unese 6 sa tastature > izlaz bi bio x= 6*5*4*3*2*1 = 720 ako sam tacno pomnozio.

Treba mi jedan takav primjer u C++, ali da radi sa svakim unesenim brojem.

Hvala
abdagic.com
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: C++ > N faktorijel27.04.2005. u 17:42 - pre 231 meseci
na primer, moze (rekurzivna) funkcija za to i u jednom redu:
Code:

// netestirano!!!
int f( int n ) { return ( n > 1 ? n * f( n-1 ) : 1 ); }

ili malo razumljivije:
Code:

// netestirano!!!
int f( int n )
{
   if ( n > 1 )
      return ( n * f( n - 1 ) );
   else
      return ( 1 );
}
 
Odgovor na temu

Lazar-I

Član broj: 6950
Poruke: 169
*.ptt.yu.



+727 Profil

icon Re: C++ > N faktorijel27.04.2005. u 22:19 - pre 231 meseci
Ako ne ume da napise prog. koji racuna faktorijel, sigurno nece razumeti ni rekurziju. Zato evo iteracije.

Code:
//takodje netestiranno
int fakt(int n)
{
    int rezultat=1;
    for(int i=1;i<=n;i++)
         rezultat=rezultat*i;
    retrun rezultat;
}


 
Odgovor na temu

virtualx
bihać - BIH

Član broj: 5930
Poruke: 3383
*.dlp244.bih.net.ba.

ICQ: 11


+4 Profil

icon Re: C++ > N faktorijel27.04.2005. u 23:22 - pre 231 meseci
da ti netreba slucajno za seminarski iz predmeta osnove racunarske tehnike.
:)))


 
Odgovor na temu

addo19

Član broj: 53993
Poruke: 19
*.dlp434.bih.net.ba.

Sajt: www.abdagic.com


Profil

icon Re: C++ > N faktorijel29.04.2005. u 21:44 - pre 230 meseci
treba : ) ) ) .. problem je sto me programiranje toliko ni ne zanima ... .znam neke osnove i to je sve ... Evo naso sam jedan dobar primjer ... moram ga jos samo objasniti, a neke linije ne razumijem ..


Code:
#include <stdio.h>
void main()


    {
        long N , b , c , p ; // use int for fast calculation and small range of calculation..
                                // use double for factor bigger than 12!
    Restart:
    
        printf("Enter N!: ");
        scanf("%d", &N);
            if(N < 0)


            {
                printf("\t\n R.estart, I.nvalid P.arameter! (N > -1)\n");
                goto Restart;
            }
            else
            c = N - 1;
            p = 1;
            while(c>0) 


                {
                    p = 0;
                    b = c;


                            while(b>0) {
                    
                                    if ( b & 1 )


                                        {
                                        p += N; // p = p + N;
                                        }
                                // if you would like to use double choose the alternative forms instead shifts 
                             // the code is fast even!
                                // you can use the same tips on double or 64 bit int etc.... but you must... ;-)
                                b >>=1; // b/=2; (b = b / 2;) ( b >> 1; a.s.r. is more efficent for int or long..!)
                                N <<=1; // N += N; N = N + N; N = N * 2; (N <<=1; a.s.l. is more efficent for int or long..!)
                                } // end of: while(b>0)
                                N = p;
                                c--; // c = c - 1;
                        } // end of: while(c > 0)
                        printf("[%d] is the factorial! \n", p);
                }
                //p.s.
                //using recursion is much slower!
                //for example:
                //
                //int fact(int);
                //void main()


                    //{
                    // int N;
                    // printf("Enter the number: ");
                    // do
                    // { scanf("%d",&N);}
                    // while(N<0);
                    // printf("\n %d", fact(N));
                    // }
                    // int fact(int N)


                        // {
                        // int f;
                        // if(N==0)f=1;
                        // else f=N*(fact(N-1));
                        // return f;
                        // }


AL dobro sve je lijepo objasnjeno pa nece biti neki problem ....
abdagic.com
 
Odgovor na temu

virtualx
bihać - BIH

Član broj: 5930
Poruke: 3383
*.dlp146.bih.net.ba.

ICQ: 11


+4 Profil

icon Re: C++ > N faktorijel29.04.2005. u 23:01 - pre 230 meseci
da nisi slucajno iz bihaca jer sam i ja dobio seminarski iz c++
prof.osman cehajic nas nista nije naucio a daje prekomplicirane seminarske za nas.
ja sam dobio shell sort i nemam pojma kako da to uradim
moracu pretraziti po netu,ali malo sam sta nasao i ne ono sto mi treba.

 
Odgovor na temu

toroman
Srećko Toroman
www.wowd.com
Beograd / Banja Luka

Član broj: 52673
Poruke: 159
*.dialup.blic.net.

Sajt: toroman.wordpress.com


Profil

icon Re: C++ > N faktorijel30.04.2005. u 16:07 - pre 230 meseci
programiranje se uči iz knjiga, a od profesora, teško ...

X Files je napisao program za faktorijele ... btw, mi u Banjoj Luci smo to radili u osmom razredu osnovne škole ...

Programeri su odgovorili na Hamletovo pitanje "Biti il ne biti?" :
0x2B | ~0x2B = 0xFF
(kao ono - ff - teško pitanje!)
 
Odgovor na temu

IronTIRANIN
Milos Manojlovic
Nis

Član broj: 12974
Poruke: 59
*.dial.InfoSky.Net.



+1 Profil

icon Re: C++ > N faktorijel04.05.2005. u 07:09 - pre 230 meseci
Isprobano i radi super (Visual Studio 6)
Code:

#include<iostream.h>

    
    void stepen()
    {
        int i,a,b;
        long int c=1;
        cout<<"\n\n";
        cout<<"    F-ja koja racuna n-ti stepen unetog broja\n\n";
        cout<<"    Unesite izlozilac : ";
        cin>>a;
        cout<<"    Unesite stepen : ";
        cin>>b;
        for (i=1; i<=b; i++)
            c=c*a;
        cout<<"    Rezultat je : " <<c;
    }
        

    void faktorijel()
    {
        int i,a;
        long int c=1;
        cout<<"\n\n";
        cout<<"    F-ja koja racuna faktorijel unetog broja\n\n";
        cout<<"    Unesite broj : ";
        cin>>a;
        for (i=1; i<=a; i++)
            c=c*i;
        cout<<"    Rezultat je : " <<c;
    }



    void main()
    {
        int izbor;
        cout<<"\n\n";
        cout<<"    Ovaj program racuna neke f-je na osnovu unetih podataka.\n\n";
        cout<<"    Ukoliko zelite da izracunate stepen nekog broja ukucajte 1\n";
        cout<<"    Ukiliko zelite da izracunate faktorijel nekog broja ukucajte 2\n";
        cout<<"\n    Vas izbor (1,2) ? ";
        cin>>izbor;
        if (izbor!=1)
        {
            if (izbor!=2)
                cout<<"\n    Greska! Niste u mogucnosti da koristite opciju " <<izbor <<"!";
            else
                faktorijel();
        }
        else
            stepen();
        cout<<"\n\n";
    }


Nisam imao pametnija posla i eto malo se zezao sa c++. Gore navedeni program racuna stepene i faktorijel. Uostalom probaj da ga iskompajliras pa ces i sam videti.
Poz!
 
Odgovor na temu

blaza
n/a

Član broj: 961
Poruke: 743
*.yu1.net.



+3 Profil

icon Re: C++ > N faktorijel04.05.2005. u 17:20 - pre 230 meseci
Problem sa Vasim resenjima je u tome sto mogu da racunaju najvise 14!-15!. Resenje koje dajem moze da racuna i 1000!. Zurio sam, tako da je moguce da se potkrala koja greska.
Code:
#include <iostream>
const int VEL = 1000;
const int D = 1000UL;
unsigned long proizvod[VEL] = {};
int main(void){
    int n;
    std :: cout << "Unesi n = ";
    std :: cin >> n;
    std :: cout << "\nn! = ";
    proizvod[VEL - 1] = 1UL;
    for(int i = 1; i <= n; i++){
        unsigned long temp = 0UL;
        for(int j = VEL - 1; j >= 0; j--){
            proizvod[j] = proizvod[j] * i + temp;
            temp = proizvod[j] / D;
            proizvod[j] %= D;
        }
    }    
    bool lz = true;
    for(int j = 0; j < VEL; j++){
        if(lz && proizvod[j])
            lz = false;
        if(!lz)
            std :: cout << proizvod[j];
    }
    std :: cout << "\n";
    system("pause");
}



[Ovu poruku je menjao blaza dana 19.05.2005. u 17:42 GMT+1]
O_o
 
Odgovor na temu

virtualx
bihać - BIH

Član broj: 5930
Poruke: 3383
*.dlp164.bih.net.ba.

ICQ: 11


+4 Profil

icon Re: C++ > N faktorijel05.05.2005. u 15:34 - pre 230 meseci
sorry al moze li mi tko pomoci u vezi teme shell sort.
dakle najbolje bi bilo da nadjem negdje gotov izvorni kod,a za literaturu cu lakse.
bio sam nesto nasao ali neradi,nece da kompajlira,ima neka greska.
ako nije komplikovano molio bi da netko napise kod.

 
Odgovor na temu

frxtvz

Član broj: 58672
Poruke: 1
*.adsl.net.t-com.hr.



Profil

icon Re: C++ > N faktorijel18.05.2005. u 13:37 - pre 230 meseci
//n faktorijel
#include <stdio.h>
int main()
{
int n,i,p=1;
printf("unesi n->");
scanf("%d",&n);
for(i=1;i<=n;i++)p*=i;
printf("rezultat je %d \n",p);
}

to je racunanje faktorijela
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
*.in-addr.btopenworld.com.



Profil

icon Re: C++ > N faktorijel18.05.2005. u 17:51 - pre 230 meseci
Svi pocetnici neka pogledaju http://remus.rutgers.edu/~rhoads/Code/code.html.
Tamo ima resenja za vase zadatke. Nadam se da engleski nije problem?

yooyo
 
Odgovor na temu

blaza
n/a

Član broj: 961
Poruke: 743
*.yu1.net.



+3 Profil

icon Re: C++ > N faktorijel18.05.2005. u 18:56 - pre 230 meseci
Primer za faktorijel sa datog linka je nepotrebno iskomplikovan i spor.
O_o
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: C++ > N faktorijel18.05.2005. u 19:30 - pre 230 meseci
Citat:

Primer za faktorijel sa datog linka je nepotrebno iskomplikovan i spor.

da, ali:
Citat:

Calculates factorials up to 1000! without overflow.

... ako smo gledali isti kod ;)
 
Odgovor na temu

blaza
n/a

Član broj: 961
Poruke: 743
*.yu1.net.



+3 Profil

icon Re: C++ > N faktorijel19.05.2005. u 06:24 - pre 230 meseci
Jesmo. Pogledaj moj prvi post u ovoj temi.
O_o
 
Odgovor na temu

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 191
*.nat-pool.bgd.sbb.co.yu.



Profil

icon Re: C++ > N faktorijel19.05.2005. u 16:29 - pre 230 meseci
Faktorijel za bilo koje N :)

Code:

// factoriel.cpp : Defines the entry point for the console application.
//


#include "stdafx.h"
#include <vector>
using namespace std;

void dump( vector<int> &result, int fac )
{
    printf( "[%d]! = ", fac );
    for ( int i = result.size() - 1; i > -1; --i ) printf( "%d", result[i] );
    printf( "\n" );
}

void dump( vector<int> &result, char *debugName )
{
    printf( "[%s]%d:", debugName, result.size() );
    for ( int i = result.size() - 1; i > -1; --i ) printf( "%d", result[i] );
    printf( "\n" );
}

int GetAt( vector<int> &result, int at )
{
    if ( at < result.size() ) return result[at];
    else return 0;
}

void SetAt( vector<int> &result, int at, int value )
{
    if ( at < result.size() ) result[at] = value;
    else { 
        while ( at > result.size() )  result.push_back( 0 );
        result.push_back( value );
    }
}

void add( vector<int> &out, vector<int> &result )
{
    int i = 0;
    int c = 0;
    for ( ; i < max( out.size(), result.size() ); ++i )
    {
        int val = GetAt( out, i ) + GetAt( result, i ) + c;
        c = val / 10;
        SetAt( out, i, val % 10 );
    }
    while ( c )
    {
        SetAt( out, i, c % 10 );
        ++i;
        c /=  10;
    }
}

void mul( long n, vector<int> &result )
{
    vector<int> tempResult;
    vector<int> outResult;
    for ( int i = 0; i < result.size(); ++i )
    {
        tempResult.clear();
        long r = GetAt(result, i)*n;
        int k = i;
        while ( r )
        {
            SetAt( tempResult, k, r % 10 );
            ++k;
            r /= 10;
        }
        add( outResult, tempResult );
    }
    for ( int i = 0; i < outResult.size(); ++i )
    {
        SetAt( result, i, outResult[i] );
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    
    vector<int> result;
    result.push_back( 1 );
    long N = 100;
    for ( long i = 1; i < N; ++i )
    {
        mul( i, result );
        dump( result, i );
    }
    return 0;
}


 
Odgovor na temu

gstudios
adnan dzaferovic
Sarajevo

Član broj: 65651
Poruke: 1
89.146.164.*

Sajt: www.msp-clan.com


Profil

icon Re: C++ > N faktorijel04.09.2007. u 18:19 - pre 202 meseci
Code:
#include <iostream>
using namespace std;
int faktorijel(int n);
int main()
{
int n,s;
cout<<"Unesite broj "<<endl;
cin>>n;
s=faktorijel(n);
cout<<n<<"!="<<s<<endl;
system("pause");
return 0;
}
int faktorijel(int n)
{
cout<<"f1("<<n<<")=";
if(n==0)
{
cout<<1<<endl;
return 1; //bazni slucaj
}
else
{
cout<<n<<" *f1("<<n-1<<")\n";
return (n*faktorijel(n-1));
}
}
 
Odgovor na temu

[es] :: C/C++ programiranje :: C++ > N faktorijel

[ Pregleda: 14458 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

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