Avatar
Neaktivní uživatel:

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. října 9:28
Neaktivní uživatelský účet
Avatar
Luboš Běhounek (Satik):

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í
+1 bodů
Řešení problému
Nahoru Odpovědět  +2 1. října 9:47
:)
Avatar
Neaktivní uživatel:

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. října 10:02
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Libor Šimo (libcosenior):

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  +4 1. října 10:33
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Neaktivní uživatel:

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  -3 1. října 10:39
Neaktivní uživatelský účet
Avatar
gcx11
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
gcx11:

"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  +2 1. října 11:00
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Petr Stastny:

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. října 11:02
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Lukas C#:

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  +2 1. října 11:04
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Martin Dráb:

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. října 12:04
2 + 2 = 5 for extremely large values of 2
Avatar
DarkCoder
Člen
Avatar
DarkCoder:

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. října 15:07
Avatar
Odpovídá na DarkCoder
Neaktivní uživatel:

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. října 18:30
Neaktivní uživatelský účet
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Martin Dráb:

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. října 21:20
2 + 2 = 5 for extremely large values of 2
Avatar
Odpovídá na Martin Dráb
Neaktivní uživatel:

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. října 21:31
Neaktivní uživatelský účet
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Neaktivní uživatel
DarkCoder:

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. října 22:25
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.