c++ faktorial Vyřešeno

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
rhsCZ
Level 4
Level 4
Příspěvky: 1395
Registrován: červen 13
Pohlaví: Muž
Stav:
Offline
Kontakt:

c++ faktorial

Příspěvekod rhsCZ » 16 čer 2015 15:36

Zdravím ve škole jen tak okrajově berem c++ a zajímá mě kde mám v chybu v kódu, začne to blbnout po číslu 5040, které se vynásobí 8 mi vrátí zápornou hodnotu. Pro test jsem zadával faktorial čísla 9, pro všechny čísla program menší jak 8 funguje a vypíše správný výsledek faktoriálu, zkoušel jsem dát i proměnné typu "long long", ale nic. Sice mi trochu blbnou čísla jako 0,1, ale to je zatím jedno.

Kód: Vybrat vše

#include <stdio.h>

void main()
{
int x;
long long z=2,y;
printf("zadej cislo ze ktereho chcete udelat faktorial.\n");
scanf("%d",&x);
for(y=3;y<=x;y++)
{
z= z*y;
}
printf("faktorial cisla %d je %d",x,z);
}


„Zeptáš-li se, budeš 5 minut vypadat jako blbec. Nezeptáš-li se, budeš blbcem po celý život.“
„Mnozí z těch, co žijí, by zasluhovali smrt. A mnozí z těch, co zemřeli, by si zasloužili žít.“ - John Ronald Reuel Tolkien
„Je lepší být nenáviděn pro to, jaký jsi, než být milován pro to, co nejsi.“ - Kurt Cobain
https://rhscz.eu
https://github.com/rhsCZ

Reklama
Uživatelský avatar
Oxxid
člen BSOD týmu
Master Level 8
Master Level 8
Příspěvky: 6194
Registrován: prosinec 12
Pohlaví: Muž
Stav:
Offline

Re: c++ faktorial

Příspěvekod Oxxid » 16 čer 2015 15:57

Kód: Vybrat vše

#include <stdio.h>

void main()
{
   int x;
   unsigned __int64 z = 2, y;
   printf("zadej cislo ze ktereho chcete udelat faktorial.\n");
   scanf("%d", &x);
   for (y = 3; y <= x; y++)
   {
      z = z*y;
   }
   printf("faktorial cisla %d je %llu", x, z);
}


Funguje bez problemu. S datovym typem int32 doje k preteceni u cehokoli vetsiho nez 12. Btw. nemelo by se v C++ pouzivat spise cin a cout?

Uživatelský avatar
rhsCZ
Level 4
Level 4
Příspěvky: 1395
Registrován: červen 13
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: c++ faktorial

Příspěvekod rhsCZ » 16 čer 2015 16:32

cin a cout je dle mě ekvivalentem scanf a printf a nevidím rozdíl mezi obě způsoby čtení a výpisu.
Mám dotaz co znamená _ a 64 ve definici proměnných konkrétně v té části "_int64".


„Zeptáš-li se, budeš 5 minut vypadat jako blbec. Nezeptáš-li se, budeš blbcem po celý život.“
„Mnozí z těch, co žijí, by zasluhovali smrt. A mnozí z těch, co zemřeli, by si zasloužili žít.“ - John Ronald Reuel Tolkien
„Je lepší být nenáviděn pro to, jaký jsi, než být milován pro to, co nejsi.“ - Kurt Cobain
https://rhscz.eu
https://github.com/rhsCZ

Uživatelský avatar
Oxxid
člen BSOD týmu
Master Level 8
Master Level 8
Příspěvky: 6194
Registrován: prosinec 12
Pohlaví: Muž
Stav:
Offline

Re: c++ faktorial

Příspěvekod Oxxid » 16 čer 2015 16:38

64 bit integrer.

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: c++ faktorial  Vyřešeno

Příspěvekod faraon » 16 čer 2015 17:15

rhsCZ píše:cin a cout je dle mě ekvivalentem scanf a printf...

To sice je, ale cin a cout jsou metody ze standardní knihovny C++ s názvem iostream, zatímco scanf a printf jsou funkce ze standardní knihovny jazyka C s názvem stdio.h, takže jsou to ekvivalenty z úplně jiného jazyka! Ono se to nezdá, ale mezi těmi dvěma jazyky jsou dost podstatné rozdíly, takže vůbec není dobré je míchat dohromady, pokud to není nezbytně nutné a pokud opravdu velmi dobře nevíš co děláš.

I když mezi námi, ten kód co jsi sem postnul není žádné C++ ale úplně obyčejné C, navíc pěkná prasárna, protože to co tam máš neodpovídá ani ANSI C z roku 1989! Takhle se v Céčku programovalo v sedmdesátých a osmdesátých letech, a byla to pěkná divočina, jenže od té doby tenhle jazyk prošel velkým vývojem a několika reformami, a dostal vlastnosti které z něj udělali mnohem lepší nástroj než byl předtím.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti