Faktorial – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Faktorial – C / C++ – Fórum – Programujte.comFaktorial – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Tom@sQo0
Stálý člen
30. 10. 2007   #1
-
0
-

ahoj,
ako sa da vypocitat napriklad 1000! ??? viem, ze asi cez stringy sa to bude ukladat... nevie niekto presny algoritmus... pls co najrychlejsiee..

Nahlásit jako SPAM
IP: 88.212.23.–
Tom@sQo
Reklama
Reklama
Phoenix0
Super člen
30. 10. 2007   #2
-
0
-
Nahlásit jako SPAM
IP: 85.70.88.–
tmi0
Věrný člen
30. 10. 2007   #3
-
0
-

docela zajimava stranka... ale jestli maji byt ty algoritmy rychle tak nevim proc jsou v jave a c#...
co se tyce velikych cisel, algoritmus na jejich rychlejsi nasobeni najdes tu: http://ksp.mff.cuni.cz/tasks/19/cook2.html (toho quicksortu si nevsimej, je to az dole). reprezentovat si je muzes treba jako bitova pole (je to pak trochu min prehledne a narocnejsi na implementaci, ale usporis docela dost mista).

Nahlásit jako SPAM
IP: 89.185.230.–
ksp.mff.cuni.cz -- doporučuje 5 z 0 přetečených bufferů!
Jeyekomon0
Stálý člen
31. 10. 2007   #4
-
0
-

Hmm, IMHO staci jeden cyklus:



int factorial = 1;
for(int i=1; i<=1000; i++)
{
factorial = factorial * i;
}

Nahlásit jako SPAM
IP: 195.113.20.–
jjk
Jura
~ Anonymní uživatel
634 příspěvků
31. 10. 2007   #5
-
0
-

To Jeyekomon :
Problém je v tom, že int, ani 64-bitový, není schopen reprezentovat, tak velké číslo jako je 1000!.

Nahlásit jako SPAM
IP: 85.207.192.–
Jeyekomon0
Stálý člen
31. 10. 2007   #6
-
0
-

To Jura :
:) Vlastne jo, vubec jsem si neuvedomil, jak velike to je cislo.. Tak to potom netusim .

Nahlásit jako SPAM
IP: 195.113.20.–
jjk
Matrix17
~ Anonymní uživatel
285 příspěvků
31. 10. 2007   #7
-
0
-

Vpodstatě by se to dalo řešit i rekurzí akorát by byl potřebnej dostatečně velkej datovej typ. Long Long Double je na to malej (na 1000!) ale na menší čísla proč ne...



long long double faktorial(long long double cislo)
{
if (cislo != 2)
cislo = faktorial(cislo - 1) * cislo;
return cislo;
}

Nahlásit jako SPAM
IP: 85.207.17.–
tmi0
Věrný člen
31. 10. 2007   #8
-
0
-

To Matrix17 : ty ses ale mozek vid? nezlob se na me, ale tvuj prispevek ma naprosto NULOVOU hodnotu. osobe, ktera prispevek zakladala (a tedy ktere mi radime) je jasne ze se faktorial do zakladnich datovych typu nevejde, a to ze napises nejtrivialnejsi zpusob zapisu vypoctu faktorialu (a taky nejpomalejsi, co se tyce vetsich n, na coz se prave autor tematu pta), ktery se zde uz objevil. a to ze to prevedes na rekurzi to dokonce jeste zpomalis. doufam ze se neurazis, ale moje nervy nezvladnou vsechno.

Nahlásit jako SPAM
IP: 89.185.230.–
ksp.mff.cuni.cz -- doporučuje 5 z 0 přetečených bufferů!
k
~ Anonymní uživatel
143 příspěvků
31. 10. 2007   #9
-
0
-

Lisp rules 'em all ;)



(defun fact(x) (if(= x 1) 1 (* x (fact (- x 1)))))

Zvlada po 1363! (gcl).
Sorry za ot ;), chcel som len povedat ze preco to nerobis v jazyku ktory "sam od seba" zvlada huge cisla ?
Ale inak mi to tak zacalo vrtat hlavou ze uz mam funkciu (v C-cku) kora nasobi lubovolne dlhe retazce ale ten faktorial mi furt nefuguje.... no co uz, idem kodit...

Nahlásit jako SPAM
IP: 195.91.54.–
DavidoS
~ Anonymní uživatel
1 příspěvek
14. 4. 2014   #10
-
0
-

Zdravím,

mohl by mi někdo poradit, jak udělat to, aby se po oznámení "Zadej kladne cislo" jiz program zastavil a vyzadal si dalsi zadani cisla? On totiz pokracuje a pocita faktorial ze zaporneho cisla. Zde je zdroják

long i, a, n;
  printf("Zadej cislo pro zjisteni jeho faktorialu\n");
  scanf("%ld",&a);
  
  {if(a>=0);
  else if(a<0) printf("Faktorial nelze vypocist\n");
  
  n=1;
  for (i=1; i<=a; i++)
  {n=n*i;}
  printf("Faktorial z cisla %ld je %ld\n",a,n);}

Děkuji za radu

Nahlásit jako SPAM
IP: 2a00:1028:9941:42a:f944:b...–
hlucheucho+10
Posthunter
15. 4. 2014   #11
-
0
-

problém je v uspořádání podmínek. Bohatě by stačila jedna a správně napsaná.

hu

Nahlásit jako SPAM
IP: 188.95.60.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 60 hostů

Podobná vlákna

Faktorial — založil Snake

Faktorial ve while — založil Noneus

Faktorial - IF funguje, WHILE ne — založil Petr Hájek

Faktorial - IF funguje, WHILE ne — založil Petr Hájek

Faktorial s alokaci paměti. — založil bergeros

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý