IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – 11. diel - Pretypovania a operátormi

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Cement
Člen
Avatar
Cement:8.4.2017 21:20

Co konkrétně dělá v podmínce "(bool)cin"? Když je zadán prázdný řetězec, tak cin má hodnotu false a vyskočí z cyklu while?

Musí být "int precteno" v cyklu while nebo stačí proměnnou definovat před cyklem?

Předpokládám, že má být správně "suma += precteno;".

Odpovedať
8.4.2017 21:20
Když selžou všechny pokusy, použijte návod.
Avatar
Odpovedá na Cement
Patrik Valkovič:8.4.2017 21:47

Ano, má být "suma += precteno;", opraveno.
"(bool)cin" zjistí, že čtení proběhlo úspěšně. Například když na vstup příjde "l", tak cin pozná, že to není číslo a při následném přetypování vrátí false.
promměná "precteno" může být umístěna i před cyklem. Takhle to vypadá, že se proměnná inicializuje při každé průchodu cyklu, ale kompilátor kód optimalizuje a vystrčí ji stejně ven.

Odpovedať
8.4.2017 21:47
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Cement
Člen
Avatar
Cement:9.4.2017 11:41

V podmínce je to "(bool)cin" zbytečné, protože nebude mít nikdy hodnotu menší než nula. Možná by tam mělo být "(bool)cin = 0".

Odpovedať
9.4.2017 11:41
Když selžou všechny pokusy, použijte návod.
Avatar
Odpovedá na Cement
Patrik Valkovič:9.4.2017 12:28

Co je to za hloupost? Tady nejde o hodnotu, ale o logické true nebo false. Pokud se cinu nepodaří přečíst znak, poté při přetypování na bool vrací false a cyklus se ukončí. Stejně tak, pokud se zadá záporné číslo, tak se cyklus ukončí. Schválně zkus program zkompilovat a dát tam čísel ap oté třeba "k".

Odpovedať
9.4.2017 12:28
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovedá na Patrik Valkovič
Neaktivní uživatel:9.4.2017 12:39

Nema cin pretypovani na bool explicitni?

Odpovedať
9.4.2017 12:39
Neaktivní uživatelský účet
Avatar
Cement
Člen
Avatar
Cement:9.4.2017 13:17

No právě, když si program zkopíruji do CodeBlocks, tak ať napíšu cokoli, tak se hned ukončí. Když opravím "(bool)cin = =0" (nula nebo false) tak to dělá asi to, co to má dělat.

Před opravou to hází chybu:
Zadejte cisla (zaporne cislo pro ukonceni): 33
Prumer je: -nan

Oprava: if( (bool)cin == 0 || precteno < 0 )

Po opravě to pracuje asi správně:
Zadejte cisla (zaporne cislo pro ukonceni): 55
55
55
g
Prumer je: 55

Odpovedať
9.4.2017 13:17
Když selžou všechny pokusy, použijte návod.
Avatar
Odpovedať
9.4.2017 14:32
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovedá na Cement
Patrik Valkovič:9.4.2017 14:34

Jo máš pravdu, pokud přečte číslo, tak se vyhodnotí na true a tím se program ukončí. Má tam být "!(bool)cin", popřípadě jiná variace. V článku je to opraveno.

Odpovedať
9.4.2017 14:34
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Jáchym Kouba:5.8.2019 10:49

Super článek, jen taková drobnost na začátku: *Některé operátory ještě nemusíte znát, to nevadí, pbudou probrány až v lekci OOP. *

 
Odpovedať
5.8.2019 10:49
Avatar
Marek Němec
Člen
Avatar
Marek Němec:20.12.2023 20:23

Nebyla vůbec vysvětlen tento řádek kódu...
(bool)cin==false

 
Odpovedať
20.12.2023 20:23
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!