Kezdőoldal » Számítástechnika » Programozás » Hogy lehet c-ben a binomiális...

Hogy lehet c-ben a binomiális együttható értékét kiszámítani?

Figyelt kérdés

Beírok két számot, hogy pl 8 aztán 6, és adja meg a (8 alatt a 6) értékét. Én eddig vagyok meg vele:

#include <stdio.h>

int main()

{

int szamlalo[40]={1};

int nevezo[40]={1};

long long unsigned a;

int n, k, i, s, z, q, l;

scanf("%d", &n);

scanf("%d", &k);

if(k>n-k)

{k=n-k;}

s=n;

i=0;

while(s>n-k)

{szamlalo[i]=s;

s=s-1;

i=i+1;}

z=k;

l=0;

while(z>1)

{nevezo[l]=z;

z=z-1;

l=l+1;}

for(i=0; i<40; i=i+1)

{for(q=0; q<40; q=q+1)

{if(szamlalo[i]%nevezo[q]==0)

{szamlalo[i]=szamlalo[i]/nevezo[q];}}}

a=1;

for(i=0; i<40; i=i+1)

{a=a*szamlalo[i];}

printf("%llu", a);

return 0;

}


És floating point exception ír ki.



2021. okt. 8. 09:59
 1/6 Pelenkásfiú ***** válasza:
100%

Mi ez a rengeteg változó? :)


Írj egy pár soros függvény, ami kiszámítja a faktoriálist!

Utána: fact(n) / (fact(k) * fact(n - k))

Kész.

2021. okt. 8. 10:04
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:
0%

Hátha a következő link segít:

[link]

2021. okt. 8. 10:15
Hasznos számodra ez a válasz?
 3/6 Pelenkásfiú ***** válasza:
#2 Az nem segít, hanem megmondja a megoldást.
2021. okt. 8. 10:27
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:
19%

A faktoriális kiszámítása rekurzív módon:

int factorial(int n) {

return n == 0 ? 1 : n * factorial(n - 1);

}

2021. okt. 8. 10:30
Hasznos számodra ez a válasz?
 5/6 anonim válasza:

én faktoriálsos megközelítést nem erőltetném, mert egy pillanat alatt csitrilliárdos léptékű számaid lesznek...

lusta vagyok végigbogarászni a színezetlen tördeletlen kódot, de így első pillantásra úgy látom, hogy valami szorzatképletet használsz, kissé bő lére eresztve...


van rá egy egyszerű produktum képlet 1-től k-ig összeszorzod, hogy (n-k+1)/1, és megkapod n alatt a k-t.


egysoros program, és nem emlékszem, hogy mikor használtam for ciklus indexébe lebegőpontost, de íme:


#include <stdio.h>


int main()

{

int n = 8;

int k = 3;

double res = 1;


for (double i=1; i<=k; i++) res*=(n-k+i)/i;


printf("%f", res);

return 0;

}

2021. okt. 8. 23:48
Hasznos számodra ez a válasz?
 6/6 anonim válasza:

elkapkodtam, *szóval: összeszorzod i=1 től káig, hogy (n-k+i)/i, na.

a kódba legalább jól írtam, asztat nézd

2021. okt. 9. 00:06
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!