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;
}
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...
No ja som nedal velku n=4 k=2 a teda hodnota by mala byt 2 co neni velke cislo :D
int nminusk = n-k;
int faktorial_vysledku = 1;
for(i=2; i<=nminusk; i++)
{
faktorial_vysledku=faktorial_vysledku*i;
}
Spíš popřemýšlej, jak to vypočítat bez toho, abys musel počítat dva faktoriály.
tak ale faktorial n potrebujes tez predsa lebo faktorial_n je iny ako faktorial_vysledku a na konci ich treba delit
aha asi uz viem co si myslel ok diky moc