Jazyk C a zjištění maximálního čísla – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jazyk C a zjištění maximálního čísla – C / C++ – Fórum – Programujte.comJazyk C a zjištění maximálního čísla – C / C++ – Fórum – Programujte.com

 

Filipus
~ Anonymní uživatel
1 příspěvek
13. 3. 2008   #1
-
0
-

Jak mám napsat program, který vypíše maximální číslo, které je možno uložit do

unsigned int
signed int
short
long

?

Díky za případné odpovědi :)

Nahlásit jako SPAM
IP: 85.207.199.–
Santas0
Věrný člen
13. 3. 2008   #2
-
0
-



int pole[5]; //zadame don cisla
int dlzkapola = ...; //neviem presne ako to zistit, tak pri zadavani dlzkapola++
int i, najvacsie = 0;

for(i = 0; i < dlzkapola; i++){
if(pole[i] > najvacsie)
najvacsie = pole[i];
}

pisane z hlavy

Nahlásit jako SPAM
IP: 195.91.64.–
http://psandtner.sk/blog
Nosko0
Stálý člen
13. 3. 2008   #3
-
0
-

Pozri si limits.h, tam sú maximálne hodnoty pre jednotlivé typy.

Nahlásit jako SPAM
IP: 84.16.37.–
Santas0
Věrný člen
13. 3. 2008   #4
-
0
-

ups, pardon, zle som si precital dotaz

Nahlásit jako SPAM
IP: 195.91.64.–
http://psandtner.sk/blog
Zelenáč0
Posthunter
13. 3. 2008   #5
-
0
-

To Filipus : Max cislo, ktere se vejde do jednoho bytu (unsigned char) je 255, tedy 2^8 -1 (ten exponent je pocet bitu - v jednom bytu je jich vetsinou osm)
Pomoci fce sizeof() si zjistis velikost typu v B, prevedes na b (vynasobeni osmi) a vyslednym cislem umocnis 2. Nakonec odectes jednicku (musime pocitat s nulou -> pokud se do typu vejde 256 hodnot, maximum je 255) a pokud se jedna o signed typ, vydelis to jeste dvouma.



int size = sizeof(unsigned int); // velikost v B
size *= 8; // velikost v b
{desne velkej typ} max = pow(2,size)-1;
//max /= 2; // pokud je signed

Nahlásit jako SPAM
IP: 89.176.254.–
jinaq0
Newbie
13. 3. 2008   #6
-
0
-

No možné je to udělat i takto:



unsigned int cislo = 1;
unsigned int stare_cislo = 0;

while (cislo != stare_cislo)
{

stare_cislo = cislo;
cislo <<= 1;
cislo |= 1;
}


V číslu je nejvyšší hodnota pro typ unsigned

Pro signed typ udelas po tomto cyklu


cislo >>= 1;


A mas nejvyssi cislo pro signed typ.

Nahlásit jako SPAM
IP: 89.102.106.–
Zelenáč0
Posthunter
14. 3. 2008   #7
-
0
-

Napadl me jeste jeden zpusob:



unsigned long max = (unsigned pozadovany_typ)-1; // to "unsigned" tam musi byt i pokud je "pozadovany_typ" signed
// max >>= 1; // pro signed typy

Nahlásit jako SPAM
IP: 89.176.254.–
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, 13 hostů

Moderátoři diskuze

 

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