Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Variacie bez opakovania - faktorial

Toto je priklad na Variacie bez opakovania. Vsetko bezi ako ma, ale ako chcem spravit faktorial z faktorial_vysledku
vyhodi mi to nejake zaporne velke cislo pri faktorial_n je vsetko v pohode tak nechapem preco pri tom druhom to blbne
Prosim poradte

#include <stdio.h>
#include <math.h>

int main()
{
int n=0;
int k=0;
int faktorial_n=1;
int faktorial_vysledku=0;
int i=1;
int vysledok=0;

printf("Vybral si Variacie bez opakovania.\n");
printf("Zadaj k (napr. pocet miest): ");
scanf("%d",&k);
printf("Zadaj n (napr. pocet ludi): ");
scanf("%d",&n);

for(i=1; i<=n; i++)
{
faktorial_n=faktorial_n*i;
}

faktorial_vysledku=n-k;

for(i=1; i<=faktorial_vysledku; i++)
{
faktorial_vysledku=faktorial_vysledku*i;
}

printf("%d\n",faktorial_vysledku);

vysledok=faktorial_n/faktorial_vysledku;
printf("Vysledok je %d\n",vysledok);
return 0;
}

Předmět Autor Datum
Tipuju, že ti hodnota v proměnné přetekla maximální možnou hodnotu, což u celých čísel znamená přesu…
JoDiK 30.10.2013 09:49
JoDiK
No ja som nedal velku n=4 k=2 a teda hodnota by mala byt 2 co neni velke cislo :D
parker 30.10.2013 09:51
parker
int nminusk = n-k; int faktorial_vysledku = 1; for(i=2; i<=nminusk; i++) { faktorial_vysledku=fakto…
Wikan 30.10.2013 09:52
Wikan
tak ale faktorial n potrebujes tez predsa lebo faktorial_n je iny ako faktorial_vysledku a na konci…
parker 30.10.2013 09:55
parker
aha asi uz viem co si myslel ok diky moc poslední
parker 30.10.2013 09:56
parker

Tipuju, že ti hodnota v proměnné přetekla maximální možnou hodnotu, což u celých čísel znamená přesun do záporných hodnot (nejvyšší bit je znaménko). Zapni si u překladače kontrolu přetečení.
Řešit to můžeš buď použitím větší proměnné, nebo lépe úpravou algoritmu, aby tak velké hodnoty nevycházely...

Zpět do poradny Odpovědět na původní otázku Nahoru