NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Dátový typ

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Neaktivní uživatel:1.10.2016 9:28

Nazdar chlapi, počujte potrebujem vedieť ako v C++ resp. pomocou akého príkazu si môžem vytvoriť vlastný dátový typ, ktorý bude nadobúdať len celočíselne hodnoty napr. od 0 do 50 a nechce sa mi to teraz hľadať po nete. Vopred diki.

Odpovědět
1.10.2016 9:28
Neaktivní uživatelský účet
Avatar
Luboš Běhounek Satik:1.10.2016 9:47

Vlastní číslo můžeš nasimulovat třeba přes struct, na kterém si napíšeš vlastní operátory.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
1.10.2016 9:47
https://www.facebook.com/peasantsandcastles/
Avatar
Neaktivní uživatel:1.10.2016 10:02

Diki kámo, ale mne ide skôr o syntax. Radšej by si mi mohol napísať presne príkazy.

Nahoru Odpovědět
1.10.2016 10:02
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Libor Šimo (libcosenior):1.10.2016 10:33

Najvacsia sranda je to, ze tebe sa "teraz nechce hladat po nete". Takze my ostatni sa ideme pretrhnut, aby sme ti pomohli.
To si pis, ze ti niekto poradi....

Nahoru Odpovědět
1.10.2016 10:33
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Neaktivní uživatel:1.10.2016 10:39

Tak vieš kedže sa táto stránka vola ITnetwork tak predpokladám, že je tu skupina ľudí, ktorí majú s programovaním dobré skúsenosti. Podľa teba sa mám pýtať kde ??? Niekde na nejakej kuchárskej stránke alebo kde??? A prosím ťa už mi tu nespamuj, diki.

Nahoru Odpovědět
1.10.2016 10:39
Neaktivní uživatelský účet
Avatar
gcx11
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
gcx11:1.10.2016 11:00

"Diki kámo, ale mne ide skôr o syntax. Radšej by si mi mohol napísať presne príkazy." = "Napiš to za mě". Tímhle stylem se nic nenaučíš a navíc, když není vidět tvoje vlastní snaha, tak Ti nikdo odpovědět ani nemusí.

Co třeba si vygooglit, co je to struct, popř. se podívat tady na fórum? A potom se zeptat, když Ti nebudou další kroky jasné?

 
Nahoru Odpovědět
1.10.2016 11:00
Avatar
Petr Šťastný
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Petr Šťastný:1.10.2016 11:02

Proč s tím obtěžovat komunitu, když například syntax příkazu najdeš za 20 vteřin hledání?

http://www.strejda-google.cz/#…

 
Nahoru Odpovědět
1.10.2016 11:02
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:1.10.2016 11:04

Skupina lidí se zkušenostmi s programováním se nerovná bandě otroků, na které luskneš a oni ti beze slova napíšou příkazy, abys mohl udělat Ctrl + C Ctrl + V. Trochu slušnosti by to chtělo, ne?

Nahoru Odpovědět
1.10.2016 11:04
Neaktivní uživatelský účet
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Martin Dráb:1.10.2016 12:04

Pokud tě chápu správně, tak tvým datovým typem má být interval, což C/C++ přímo nepodporuje. Pokud jej chceš nativně, podívej se na Pascal/Delphi, kde můžeš zadefinovat svůj typ, celočíselný od 0 do 50, následovně:

Type
  TMujTyp = 0..50;
Nahoru Odpovědět
1.10.2016 12:04
2 + 2 = 5 for extremely large values of 2
Avatar
DarkCoder
Člen
Avatar
DarkCoder:2.10.2016 15:07

Pokud víš, co představují hodnoty 0-50, pak můžeš použít výčtové typy (ENUM).
Pro definici výčtového typu enum se užívá formát:

enum jméno_výčtu { seznam_položek } seznam_proměnných;

Konstantám uvnitř seznamu položek standardně přiřazuje překladač celočíselné hodnoty od nuly, počínaje konstantou stojící v seznamu nejvíce vlevo. Každá další konstanta směrem vpravo je o jednu vyšší než předchozí konstanta. Standardní přiřazení hodnot překladačem lze změnit, ale to ty nepotřebuješ.

Nové jméno pro již existující typ lze vytvořit pomoci TYPEDEF.
Pro použití typedef se užívá obecný formát:

typedef staré_jméno nové_jméno;

Tedy můžeš použít obdobu, viz. následující kód:

enum eBarvy { cervena, zelena, zluta, modra, bila, cerna };

typedef enum eBarvy mojebarvy;

mojebarvy barvy;

Kde konstanta cervena = 0, zelena = 1, zluta = 2, modra = 3, bila = 4 a cerna = 5.

Nahoru Odpovědět
2.10.2016 15:07
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Odpovídá na DarkCoder
Neaktivní uživatel:2.10.2016 18:30

Diki, nad tým enum som tiež rozmýšľal, ale skôr by som potreboval niečo ako písal Martin Dráb, že si proste zadefinuješ dátový typ na istom intervale a viem, že to majú byť celé čísla. Martin napísal, že c++ také niečo nepodporuje takže som z toho trochu zmätený.

Nahoru Odpovědět
2.10.2016 18:30
Neaktivní uživatelský účet
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Martin Dráb:2.10.2016 21:20

Ono i do toho enumu můžeš dostat hodnotu, která v jeho definici přímo není napsaná. Takže se nedá říci, že by to úplně hlídalo ty hranice. Pascal/Delphi je myslím hlídá o něco lépe.

Otázka je, k čemu takový typ potřebuješ. Nestačí ti ty meze hlídat ručně? Stejně ty proměnné toho typu budou reprezentovány jako integery (třeba enum, min. v Cčku, je prostě integer), takže tady nic neušetříš.

Nahoru Odpovědět
2.10.2016 21:20
2 + 2 = 5 for extremely large values of 2
Avatar
Odpovídá na Martin Dráb
Neaktivní uživatel:2.10.2016 21:31

Aha ok, tak potom použijem asi len ten enum. A ďakujem všetkým za pomoc (teda aspoň tým čo napísali niečo zmysluplné) .

Nahoru Odpovědět
2.10.2016 21:31
Neaktivní uživatelský účet
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Neaktivní uživatel
DarkCoder:2.10.2016 22:25

Zřejmě jsem se ve svém předchozím příspěvku nevyjádřil dostatečně jasně. Tak jinak..
Mějme následující kód:

enum eBarvy { cervena, zelena, zluta, modra, bila, cerna };

typedef enum eBarvy mojebarvy;

mojebarvy barvy;

Nyní se pokus odpovědět na 5 následujících otázek:

  1. Co obecně dělá položka typedef
  2. Co značí v programu položka mojebarvy
  3. Jakého typu jsou hodnoty v seznamu výčtového typu eBarvy
  4. Jakých hodnot nabývají jednotlivé položky seznamu výčtového typu eBarvy
  5. Tvoří položky výčtového typu eBarvy interval? Pokud ano, jakého rozsahu v oboru přirozených čísel N.

Jinak výborný dotaz k tématu vznesl pan Dráb. K čemu takový typ potřebuješ?
Napiš co chceš řešit. Dle mého si totiž úlohu, kterou chceš řešit, nesmírně komplikuješ a hledáš něco zbytečně extra co není potřeba.

Nahoru Odpovědět
2.10.2016 22:25
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 14 zpráv z 14.