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

Vypis maximalniho cisla – C / C++ – Fórum – Programujte.comVypis maximalniho cisla – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
nikola180
Newbie
21. 10. 2018   #1
-
0
-

ahoj.

mam problem s timto zadanim.zni doslovne..je to ukol z knihy.

Ukol  10: "Napiste program,ktery vypise maximalni cislo,ktere je mozno ulozit do unsigned int a do sign int.

Pomucka: -1 jako signed int je maximalni unsigned int a maximalni signed int je 1/2 maximalniho signed int"

netusim jak mam takovej program vubec napsat kdyz maximalni cislo pro usigned a ani signed neznam.

urcite je to jednoduchy protoze tohle je nejaka strana 45 v knize.takze zacatek.je to kniha Ucebnice jazyka C Pavel Herout.jestli se s tim nekdo setkal mohl by mi prosim vas poradit.snazim se delat vsechny ukoly podle ty knihy.nechci hledat na googlu nejaky vzory kodu kterym zatim nerozumim.

uz tim travim 3 den a porad na to nemuzu prijit.

    

Nahlásit jako SPAM
IP: 185.148.174.–
Panda380
Newbie
22. 10. 2018   #2
-
+1
-
Zajímavé

Vždyť to píše v té pomůcce (až na chybu v opisu). signed int a = -1, unsigned int umax = a; signed int smax = umax/2.

Nahlásit jako SPAM
IP: 95.129.243.–
KIIV
~ Moderátor
+43
God of flame
22. 10. 2018   #3
-
+1
-
Zajímavé

Pro pochopeni reprezentace cisel v pameti se to mozna hodi, ikdyz ne uplne idealne.

V realnem svete programovani v C se pouziji konstanty z <limits.h> nebo v C++ je zase <limits>. Zasadne se nepouzivaji magicke konstanty. Mozna nekdo pochopi, co tim autor myslel, ale take nemusi.

Nahlásit jako SPAM
IP: 46.135.98.–
Program vždy dělá to co naprogramujete, ne to co chcete...
JerryM0
Věrný člen
22. 10. 2018   #4
-
+1
-
Zajímavé

https://www.tutorialspoint.com/c_standard_library/limits_h.htm

a jinak algoritmicky se tomu řiká výpočet čísla Epsilon - nejmenší/největší zobrazitelné číslo a vypočítá se půlenim intervalu 

https://dml.cz/bitstream/handle/10338.dmlcz/141207/PokrokyMFA_49-2004-1_5.pdf

takže po tobě možná chtěj to 

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:f02a:fe9:5f86:932d...–
JerryM0
Věrný člen
22. 10. 2018   #5
-
+1
-
Zajímavé

tady o tom máš celou bakalářku

https://dk.upce.cz/bitstream/handle/10195/37488/NaranbaatarN_VybraneProblemy_JR_2010.pdf?sequence=1&isAllowed=y

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:f02a:fe9:5f86:932d...–
JerryM0
Věrný člen
22. 10. 2018   #6
-
0
-

hele našel sem to :)  bomba :)

program Epsilon;
 {$N+}
 uses crt;
 var a,b:real;
     c,d:single;
     e,f:double;
     g,h:extended;

Procedure Eps_real(var x,y:real);
  var a,b,c:real;
begin
   b:=1;
   a:=b+1;
   while a<>1 do
     begin
      c:=b;
      b:=b/2;
      a:=b+1;
     end;
   x:=c;
   y:=b
end;

Procedure Eps_single(var x,y:single);
  var a,b,c:single;
begin
   b:=1;
   a:=b+1;
   while a<>1 do
     begin
      c:=b;
      b:=b/2;
      a:=b+1;
     end;
   x:=c;
   y:=b
end;

Procedure Eps_double(var x,y:double);
  var a,b,c:double;
begin
   b:=1;
   a:=b+1;
   while a<>1 do
     begin
      c:=b;
      b:=b/2;
      a:=b+1;
     end;
   x:=c;
   y:=b
end;

Procedure Eps_extended(var x,y:extended);
  var a,b,c:extended;
begin
   b:=1;
   a:=b+1;
   while a<>1 do
     begin
      c:=b;
      b:=b/2;
      a:=b+1;
     end;
   x:=c;
   y:=b
end;

{hlavni program}
begin
   clrscr;
   textattr:=15;
   Eps_real(a,b);
   Eps_single(c,d);
   Eps_double(e,f);
   Eps_extended(g,h);
   writeln;writeln;
   writeln('                              EPSILON MACHINE            ');
   writeln('------------------------------------------------------------------------------');
   writeln;
   writeln('real       eps = ',a,'       eps/2 = ',b);
   writeln('single     eps = ',c,'       eps/2 = ',d);
   writeln('double     eps = ',e,'       eps/2 = ',f);
   writeln('extended   eps = ',g,'       eps/2 = ',h);
   writeln('------------------------------------------------------------------------------');
   repeat until keypressed;
end.


Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:f02a:fe9:5f86:932d...–
22. 10. 2018   #7
-
0
-

#6 JerryM
to vypadá na packal. To tazateli náramně pomůže

hu

Nahlásit jako SPAM
IP: 195.178.67.–
JerryM0
Věrný člen
22. 10. 2018   #8
-
0
-

#7 hlucheucho
tazatel je chytrý a do céčka si to přepíše sám .. každopádně to funguje ok ... 

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:f02a:fe9:5f86:932d...–
JerryM0
Věrný člen
22. 10. 2018   #9
-
+1
-
Zajímavé

#8 JerryM
jo a věta 

Pomucka: -1 jako signed int je maximalni unsigned int a maximalni signed int je 1/2 maximalniho signed int"

je blbě "maximalni signed int je 1/2 maximalniho signed int" ??? to je co ???

jo v céčku neni  typ real a extended takže použije jenom single a double ... 

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:f02a:fe9:5f86:932d...–
Panda380
Newbie
22. 10. 2018   #10
-
+1
-
Zajímavé

#9 JerryM
Jenom špatný opis z knížky, samozřejmě tam má být "maximalni signed int je 1/2 maximalniho unsigned int"

Nahlásit jako SPAM
IP: 94.113.242.–
22. 10. 2018   #11
-
0
-

Max hodnotu, co jde uložit do unsigned/signed int, lze odvodit z "velikosti" - tj. počtu bitů, které jsou pro uložení čísla určeny. Počet bitů lze získat jako n = 8 * sizeof(int). Max hodnotu unsigned int pak jako (2^n) - 1, pro signed int pak jako (2^(n-1)) - 1. Akorát u HW kde není 1byte = 8 bitů by to nefungovalo (považuji za vzácný případ).

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Panda380
Newbie
22. 10. 2018   #12
-
0
-

#11 hlucheucho
Naštěstí počítače s ne-8-bitovými bajty vymřely v 70. letech minulého století. :-) Horší situace je s wordem, tam je větší nejednoznačnost. Má označovat hw velikost int, ale sotware (typicky ve Windows) často používá 1 word = 2 bajty, 1 double word = 4 bajty.

Nahlásit jako SPAM
IP: 94.113.242.–
nikola180
Newbie
22. 10. 2018   #13
-
0
-

#9 JerryM
diky. ale takto to je doslovne v knize..no a pak z toho nema bejt clovek zmatenej.

Nahlásit jako SPAM
IP: 185.148.174.–
nikola180
Newbie
22. 10. 2018   #14
-
0
-

#3 KIIV
diky.tohle je presne ten spravny tip pro me.tohle vubec v te knize pred tim ukolem autor nezminil.

Nahlásit jako SPAM
IP: 185.148.174.–
MilanL+1
Grafoman
22. 10. 2018   #15
-
+1
-
Zajímavé

#14 nikola18
v podstatě se jedná o reprezentaci té -1 v Binární/Hex formě nezávisle na tom zda je int a unsigned int překladačem reprezentován 8 / 16 nebo dokonce 32 bity

u signed int = -1 jsou všechny bity v binární formě tohoto čísla = 1 nezávisle na tom zda jde o 8/16/32 bitový int 

tudíž přetypování unsigned int = signed int , kdy Signed int = -1 dává max hodnotu unsigned intu opět nězávisle na bitové velikosti dané překladačem

no a pak max signed int =  unsigned int / 2 ,

signed má rozsah max-min stejný jako unsigned, jen má 1/2 kladnou a druhou 1/2 zápornou, je to dané hodnotou nejvyššího bitu v bitové prezentaci čísla 0=kladné, 1=záporné, poznámky rozsah v kladné části bývá o 1 menší než v záporné počítá se tam i s 0, tzn u 8 bit je Unsigned 0-255 a signed -128 až 127,

případně se lze setkat též s rozsahem -127 až 127, kde se 0 je brána jako kladná 0 a reprezentace čísla -128 je brána jako záporná 0

další info lze nalézt k jednotlivým programovacím jazykům v sekcích Datové typy a další pak "reprezentace a ukládání čísel  počítači" 

Nahlásit jako SPAM
IP: 91.139.9.–
Radek Chalupa
~ Redaktor
+1
Super člen
22. 10. 2018   #16
-
0
-

vypsat to lze nějak takhle a lze z toho pochopit uložení v paměti:

unsigned int ui;
memset(&ui, 0xFF, sizeof(ui));
printf("%u\n", ui);
printf("%u\n", ui>>1);

Nahlásit jako SPAM
IP: 213.220.218.–
Panda380
Newbie
22. 10. 2018   #17
-
0
-

#16 Radek Chalupa
Většinu z těchhle věcí tam začátečník na straně 45 ještě nemá, aby jim rozuměl. 

Nahlásit jako SPAM
IP: 94.113.242.–
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, 17 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ý