Kezdőoldal » Számítástechnika » Programozás » Nem találom mit csináltam...

Nem találom mit csináltam rosszul. Mi a hiba? (C#)

Figyelt kérdés

static void Main(string[] args)

{

int kartyaszam = 6;


int deck = 30;

int kor = 15;

long esely = ((Faktorialis(deck - kartyaszam)) / (Faktorialis(kor - kartyaszam) * ( Faktorialis( (deck - kartyaszam) - (kor - kartyaszam) ) ))) / (Faktorialis(deck) / (Faktorialis(deck) * Faktorialis(deck - kor)));

Console.WriteLine(esely+"%");

Console.ReadKey();

}

static int Faktorialis(int number)

{

int hatar = number;

for (int x = 1; x < hatar; x++)

{

number *= x;

}

return number;

}



Remélem nem csúszott szét nagyon. A hiba hogy elvileg valahol 0-val oszt. Előre is köszönöm



2018. febr. 22. 06:02
 1/6 A kérdező kommentje:
Ja amúgy az "esely"-t double-al is kipróbáltam. A program lényege [link]
2018. febr. 22. 06:06
 2/6 anonim ***** válasza:
Hát pl nem hiszem, hogy 30 faktoriális belefér egy int-be.
2018. febr. 22. 07:39
Hasznos számodra ez a válasz?
 3/6 anonim ***** válasza:

Ráadásul a faktoriális számolásod is marhaság, még nagyobb számot kapsz, mint kellene.

Tesztelni felétek nem szokás?

2018. febr. 22. 07:41
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:

Ekkora egész számokhoz próbáld ki pl. a BigIntegert. [link]


Továbbá ha a szám 1 vagy kisebb, akkor az eredmény 1. És rekurziót is lehet alkalmazni, valahogy így:


int Faktorialis(int i)

{

if (i <= 1)

return 1;

return i * Faktorialis(i - 1);

}

2018. febr. 22. 09:13
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:
Szerintem a sima int az 32 bites, abba pedig sem a 15, sem a 30 faktoriális nem fér bele!
2018. febr. 22. 10:32
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:

Egyrészt: Borzalmas számolási mechanika, javaslom vegyél elő papírt, ceruzát, és vezesd le a kombinatorikai műveleteket, és meglátod, hogy lehet sokkal egyszerűbben is.


Másrészt ez van a fő osztás jobboldalán:

Faktorialis(deck)

/

(Faktorialis(deck) * Faktorialis(deck - kor))


Ez pedig integer esetén egy nagy nulla lesz, mivel a jobboldali szám elkerülhetetlenül nagyobb lesz a baloldalinál.

2018. febr. 22. 17:50
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, 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!