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

Binomni koeficijent

[es] :: C/C++ programiranje :: C/C++ za početnike :: Binomni koeficijent

[ Pregleda: 3065 | Odgovora: 18 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Flamethrower

Član broj: 316645
Poruke: 22



Profil

icon Binomni koeficijent08.11.2015. u 16:10 - pre 102 meseci
Pozdrav svima.

Dobio sam zadatak u školi da ispišem binomni koeficijent n!/k!(n-k)! u C jeziku. k mora biti manji od n. Ja sam taj zadatak pokušao uraditi ovako;

#include <stdio.h>
main()
{
float S;
int i,n,k,fakt;
i=1;
fakt=1;
printf("Unesi brojeve n i k: \n");
scanf ("%d %d",&n,&k);
if (k>n)
printf("Broj k mora biti manji od n, unesite ponovo: \n");
scanf("%d",&k);
while (i++<n)
fakt*=i;
while (i++<k)
fakt*=k;
S:=n!/(k!*((n-k)!));
printf("S=%f \n",fakt);
system("pause");
}

CodeBlocks ispisuje grešku: "expected expression before '=' token" , što govori da ima greška u redu gdje je forumula S:=n!/k!*((n-k)!); Ako možete pomozite.
 
Odgovor na temu

T.r.o.n.i.c.Srb

Član broj: 330926
Poruke: 81
*.dynamic.sbb.rs.



+11 Profil

icon Re: Binomni koeficijent08.11.2015. u 16:37 - pre 102 meseci
Pocetnici u programiranju pisite komentare za svaku liniju koda, a ne ovako dza bu pa uradite mi zadatak!
Evo da ti postavim pitanje sta ti predstavlja promenljiva fakt, sta si nameravao sa njom da uradis?
Formulu ne mozes tako napisati jer C jezik znak ! ne tumaci kao faktorijel, takodje dve tacke ispred znaka = su visak.
 
Odgovor na temu

Flamethrower

Član broj: 316645
Poruke: 22



Profil

icon Re: Binomni koeficijent08.11.2015. u 16:54 - pre 102 meseci
Ne pišem često ovde pa nisam znao za komentare. Promjenjivom fakt dobijam faktorijal od broja n, kao na ovom primjeru:

#include <stdio.h>
main()
{
int i,n,fakt;
i=1;
fakt=1;
printf("Unesite cijeli broj n: \n");
scanf("%d",&n);
while(i++<n)
fakt*=i;
printf("Faktorijel je n!=%d\n",fakt);
system("pause");
}

A brisanjem dve tacke ispred znaka = opet imam istu grešku
 
Odgovor na temu

T.r.o.n.i.c.Srb

Član broj: 330926
Poruke: 81
*.dynamic.sbb.rs.



+11 Profil

icon Re: Binomni koeficijent08.11.2015. u 17:02 - pre 102 meseci
Code:
while (i++<n)
fakt*=i;
while (i++<k)
fakt*=k;

Da li si siguran da znas sta ovaj deo koda radi ? ja nisam
Za pocetak nadji i nauci sta predstavlja binomni koeficijent i kako se racuna a onda kreni da pises program.
Ovaj nacin kojim trenutno ides nece dati rezultate jer da bi napisao program moras znati sta i kako treba da funkcionise!
 
Odgovor na temu

Flamethrower

Član broj: 316645
Poruke: 22



Profil

icon Re: Binomni koeficijent08.11.2015. u 17:24 - pre 102 meseci
Dio koda koji si napisao ne radi.Odlučio sam da napravim program koji izračunava faktorijel 2 broja , a ovo će mi kasnije poslužiti kao osnova za binomni koeficijent.

Code:
#include<stdio.h>
main()
{
int i=1,f=1,n,k;
printf("Unesite broj n: ");
scanf("%d",&n);
while(i<=n)
{
f=f*i;
i++;
}
printf("Faktorijel od broja %d je: %d\n",n,f);
printf("Unesite broj k: ");
scanf("%d",&k);
while(i<=k)
{
f=f*i;
i++;
}
printf("Faktorijel od broja %d je: %d\n",k,f);
system("pause");
}


Problem je, što ovaj program ne ispisuje faktorijel dobro. Ako unesem 5 za n i 4 za k on će ispisati da su oba 120 što nije tačno ( faktorijel od 4 je 24 ) a ako ukucam 4 za n i 5 za k on ispisuje pravilno. Gdje griješim ?
 
Odgovor na temu

T.r.o.n.i.c.Srb

Član broj: 330926
Poruke: 81
*.dynamic.sbb.rs.



+11 Profil

icon Re: Binomni koeficijent08.11.2015. u 17:32 - pre 102 meseci
Greska ti je u tome sto ti istu promenljivu koreisis za oba faktorijela, prvo ti izracuna faktorijel od broja n pa dobijeni rezultat mnozi sa i ako je i <=k ili ga samo ispise kao faktroeijel broja k.
Uvedi faktn i faktk, a kao pomocne koristi "i" i "j"
 
Odgovor na temu

Flamethrower

Član broj: 316645
Poruke: 22



Profil

icon Re: Binomni koeficijent08.11.2015. u 17:46 - pre 102 meseci
Situacija je sada još gora. Kao faktorijel od 4 ispisuje 192. Evo šta sam uradio.

Code:
include<stdio.h>
main()
{
int f=1,n,k,i,j,faktn,faktk;
i=1;
printf("Unesite broj n: ");
scanf("%d",&n);
while(i<=n)
{
faktn=faktn*i;
i++;
}
system("pause");
printf("Faktorijel od broja %d je: %d\n",n,faktn);
printf("Unesite broj k: ");
scanf("%d",&k);
while(i<=k)
{
faktk=faktk*i;
i++;
}
printf("Faktorijel od broja %d je: %d\n",k,faktk);
system("pause");
}


Šta li je sad pogrešno ? Gdje bih trebao da koristim i , j ?
 
Odgovor na temu

T.r.o.n.i.c.Srb

Član broj: 330926
Poruke: 81
*.dynamic.sbb.rs.



+11 Profil

icon Re: Binomni koeficijent08.11.2015. u 18:02 - pre 102 meseci
ZASTO stalno ponavljas istu gresku da uvek koristis samo jednu pomocnu u proslom postu sam ti rekao da koristis pomocne i i j i kad racunas faktn a j kad racunas faktk!
Zasto je tesko pisati komentare i pratiti sta se desava sa promenljivama!
 
Odgovor na temu

Flamethrower

Član broj: 316645
Poruke: 22



Profil

icon Re: Binomni koeficijent08.11.2015. u 18:20 - pre 102 meseci
Code:
#include<stdio.h>
main()
{
int f=1,n,k,i,j,faktn,faktk;
i=1;
j=1;
faktn=1;
faktk=1;
printf("Unesite broj n: ");
scanf("%d",&n);
while(i<=n)
{
faktn=faktn*i;
i++;
}
printf("Faktorijel od broja %d je: %d\n",n,faktn);
printf("Unesite broj k: ");
scanf("%d",&k);
while(j<=k)
{
faktk=faktk*j;
j++;
}
printf("Faktorijel od broja %d je: %d\n",k,faktk);
system("pause");
}


Sad ispisuje kako treba. Sad samo treba da uvrstim formulu za binomni koeficijent pa ću postovati ako bude greška. Hvala za dosadašnju pomoć.
 
Odgovor na temu

Flamethrower

Član broj: 316645
Poruke: 22



Profil

icon Re: Binomni koeficijent08.11.2015. u 18:36 - pre 102 meseci
Code:
#include<stdio.h>
main()
{
int f=1,n,k,i,j,faktn,faktk;
float a;
i=1;
j=1;
faktn=1;
faktk=1;
printf("Unesite broj n: ");
scanf("%d",&n);
while(i<=n)
{
faktn=faktn*i;
i++;
}
printf("Faktorijel od broja %d je: %d\n",n,faktn);
printf("Unesite broj k: ");
scanf("%d",&k);
while(j<=k)
{
faktk=faktk*j;
j++;
}
printf("Faktorijel od broja %d je: %d\n",k,faktk);
a=faktn/faktk(faktn-faktk);
printf("a=%f",(faktn/faktk*(faktn-faktk)));
system("pause");
}


Stavio sam formulu n!/n!(n-k)! kao faktn/faktk(faktn-faktk) ali ispisuje da faktn i faktk nisu funkcije. Šta to sad znači ?

[Ovu poruku je menjao Flamethrower dana 08.11.2015. u 20:08 GMT+1]
 
Odgovor na temu

T.r.o.n.i.c.Srb

Član broj: 330926
Poruke: 81
*.dynamic.sbb.rs.



+11 Profil

icon Re: Binomni koeficijent08.11.2015. u 18:49 - pre 102 meseci
Stavio sam formulu n!/n!(n-k)! kao faktn/faktk(faktn-faktk) ali ispisuje da faktn i faktk nisu funkcije. Šta to sad znači ?
Boldovan deo ti nije dobar treba da napises fakt(n-k) a ne faktn- faktk, to mozes uraditi kao i za n ili k samo sto umesto njih stavis npr y (y=n-k), naravno moras korisiti i novu pomocnu npr e
Sto se gresaka tice fali ti jedan znak * dole gde si napisao a= fakt.. a u poslednjem printf umesto celog izraza dovoljno je da stavis a

[Ovu poruku je menjao T.r.o.n.i.c.Srb dana 08.11.2015. u 20:07 GMT+1]
 
Odgovor na temu

Flamethrower

Član broj: 316645
Poruke: 22



Profil

icon Re: Binomni koeficijent08.11.2015. u 19:07 - pre 102 meseci
Code:
#include<stdio.h>
main()
{
int f=1,n,k,i,j,faktn,faktk;
float a;
i=1;
j=1;
faktn=1;
faktk=1;
printf("Unesite broj n: ");
scanf("%d",&n);
while(i<=n)
{
faktn=faktn*i;
i++;
}
printf("Faktorijel od broja %d je: %d\n",n,faktn);
printf("Unesite broj k: ");
scanf("%d",&k);
while(j<=k)
{
faktk=faktk*j;
j++;
}
printf("Faktorijel od broja %d je: %d\n",k,faktk);
a=faktn/faktn*(faktn-faktk);
printf("a=%f",faktn,faktk);
system("pause");
}


Sad sam to uradio ovako ali ispisuje da je a=0.
 
Odgovor na temu

T.r.o.n.i.c.Srb

Član broj: 330926
Poruke: 81
*.dynamic.sbb.rs.



+11 Profil

icon Re: Binomni koeficijent08.11.2015. u 19:12 - pre 102 meseci
Pogledaj moju izmenu i tu su ti objasnjene greske koje nalazi kompajler, a ti si u programu stavio
a=faktn/faktk(faktn-faktk); sto predstavlaj a=n!/ k!* (n!- k! ) a ta greska koju ti prikazuje je upravo ovde vidis da ti fali * ispred zagrade.
Da bi program bio tacan treba ti fakt(n-k) koji ti treba da napravis kako sam ti gore opisao
 
Odgovor na temu

T.r.o.n.i.c.Srb

Član broj: 330926
Poruke: 81
*.dynamic.sbb.rs.



+11 Profil

icon Re: Binomni koeficijent08.11.2015. u 19:14 - pre 102 meseci

Code:
#include<stdio.h>
main()
{
int f=1,n,k,i,j,faktn,faktk;
float a;
i=1;
j=1;
faktn=1;
faktk=1;
printf("Unesite broj n: ");
scanf("%d",&n);
while(i<=n)
{
faktn=faktn*i;
i++;
}
printf("Faktorijel od broja %d je: %d\n",n,faktn);
printf("Unesite broj k: ");
scanf("%d",&k);
while(j<=k)
{
faktk=faktk*j;
j++;
}
printf("Faktorijel od broja %d je: %d\n",k,faktk);
a=faktn/faktn*(faktn-faktk);
printf("a=%f",a); // a ovako je bilo printf("a=%f",faktn,faktk);
system("pause");
}


vidis izmenu
 
Odgovor na temu

Flamethrower

Član broj: 316645
Poruke: 22



Profil

icon Re: Binomni koeficijent08.11.2015. u 19:24 - pre 102 meseci
Code:
#include<stdio.h>
main()
{
int f=1,n,k,i,j,faktn,faktk;
int a;
i=1;
j=1;
faktn=1;
faktk=1;
printf("Unesite broj n: ");
scanf("%d",&n);
while(i<=n)
{
faktn=faktn*i;
i++;
}
printf("Faktorijel od broja %d je: %d\n",n,faktn);
printf("Unesite broj k: ");
scanf("%d",&k);
while(j<=k)
{
faktk=faktk*j;
j++;
}
printf("Faktorijel od broja %d je: %d\n",k,faktk);
a=faktn/faktk*(n-k);
printf("a=%d\n",a);
system("pause");
}


Ako unesem 5 za n i 2 za k ispisuje da je a=4. To nije tačno.
 
Odgovor na temu

T.r.o.n.i.c.Srb

Član broj: 330926
Poruke: 81
*.dynamic.sbb.rs.



+11 Profil

icon Re: Binomni koeficijent08.11.2015. u 19:31 - pre 102 meseci
Uradi sledece
zasto si a stavio kao int (ceo broj ) kad on treba da bude float ?
Napisi izraz za racunanje faktorijela broja y ( y=n-k) ( moras uzeti i novu promenljivu npr e)
kad to uradis
a= faktn/ faktk*fakty i to ce biti to onda
 
Odgovor na temu

Flamethrower

Član broj: 316645
Poruke: 22



Profil

icon Re: Binomni koeficijent08.11.2015. u 19:40 - pre 102 meseci
"a" sam stavio kao int jer daje isti rezultat. Kad je float dobijam 4.0000 a kao int dobijam 4. Vratiti ću na float. Napisao sam izraz za računanje y ali na šta misliš kad pišeš y=n-k ?

Izraz sam napisao ovako:

Code:
scanf("%d",&y);
while(i<=y)
{
e=e*i;
i++;
}
 
Odgovor na temu

T.r.o.n.i.c.Srb

Član broj: 330926
Poruke: 81
*.dynamic.sbb.rs.



+11 Profil

icon Re: Binomni koeficijent08.11.2015. u 19:43 - pre 102 meseci
Zasto nisi procitao ono sto sam ti napisao ? pogledaj dobro zagrade koje sam ti napisao

posto moram da idem evo ti ispravan program gde sam oznacio izmene koje sam napravio u odnosu na tvoj program
Code:
#include<stdio.h>
main()
{
    int  n, k, i, j, y, e, faktn, faktk, fakty;
    float a;
    i = 1;
    j = 1;
    e = 1;     // dodat
    fakty = 1;//  deo
    faktn = 1;
    faktk = 1;
    printf("Unesite broj n: ");
    scanf("%d", &n);
    while (i <= n)
    {
        faktn = faktn*i;
        i++;
    }
    printf("Faktorijel od broja %d je: %d\n", n, faktn);
    printf("Unesite broj k: ");
    scanf("%d", &k);
    while (j <= k)
    {
        faktk = faktk*j;
        j++;
    }
    printf("Faktorijel od broja %d je: %d\n", k, faktk);
    
    y = n - k;                                     //
    while (e <= y)                               //
    {                                                // DODAT DEO PROGRAMA
        fakty = fakty*e;                    //
        e++;                                   //
    }                                                //

    a = faktn / (faktk*fakty);
    printf("a=%f",a);
    system("pause");
}
 
Odgovor na temu

Flamethrower

Član broj: 316645
Poruke: 22



Profil

icon Re: Binomni koeficijent08.11.2015. u 20:11 - pre 102 meseci
Mnogo ti hvala za pomoć. Ne znam kako da ti se odužim. Pozdrav i sve najbolje.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Binomni koeficijent

[ Pregleda: 3065 | Odgovora: 18 ] > FB > Twit

Postavi temu Odgovori

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