• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Typ wyliczeniowy enum Cpp

42 Warsaw Coding Academy
0 głosów
1,093 wizyt
pytanie zadane 7 maja 2020 w C i C++ przez dominik195k Obywatel (1,030 p.)
Czesc, wyjasnilby mi ktos lopatologicznie do czego sluzy "enum"? Na jakims prostym przykladzie? Bo szukam i szukam ale jakos nic sie nie rozjasnia :(.
komentarz 7 maja 2020 przez tkz Nałogowiec (42,020 p.)

https://www.samouczekprogramisty.pl/typ-wyliczeniowy-w-jezyku-java/ Niby java, ale zasada działania jest taka sama, przynajmniej z teorii. 

komentarz 7 maja 2020 przez dominik195k Obywatel (1,030 p.)
Sory nie zawuazylem ze odpowiedziales, moze sprecyzuje o co mi chodzi, jak to dziala to wiem, bardziej nie rozumiem do czego tego sie uzywa a mam takie cos w zadaniu i nie mam zielonego pojecia jak tego uzyc(

 

Proszę zaprojektować i zaimplementować strukturę SPracownik. Struktura powinna przechowywać:

...

...

...

stanowisko (pole, które jest wyżej (w kodzie) utworzonym typem wyliczeniowy (enum), mogącym przechowywać rodzaj zajmowanego stanowiska: szef, pracownik lub stazysta),

doswiadczenie (liczba całkowita, stazysta powinien posiadać doświadczenie minium 10, pracownik minimum 100, a szef minimum 1000).

 

wiem ze te 2 punkty jakos sie lacza ale no nie potrafie ogarnac jak wykorzystac enum
komentarz 7 maja 2020 przez tkz Nałogowiec (42,020 p.)
enum Stanowisko
{
  szeregowy,
  menadzer,
  ...,
  ...,
  prezes
};
struct Pracowsnik
{
  Stanowisko stanowisko;
  std::string imie;
  std::string nazwisko;
  ...
}

https://stackoverflow.com/questions/4709175/what-are-enums-and-why-are-they-useful

Pierwsza odpowiedź, wyjaśnia wszystko w dość trywialny sposób. 

komentarz 8 maja 2020 przez dominik195k Obywatel (1,030 p.)
Tylko ze to chyba zwraca 0, 1, itd więc wychodzi na to że jeśli np stanowisko=szeregowy to stanowisko=0 a to trochę sensu nie ma przy wyświetlaniu danych osób ze struktury na ekranie, i o to mi chodzi glownie

4 odpowiedzi

0 głosów
odpowiedź 7 maja 2020 przez Anahan89 Obywatel (1,320 p.)
komentarz 7 maja 2020 przez dominik195k Obywatel (1,030 p.)
zajrzalem tam wczesniej i nie za bardzo mi to pomoglo
0 głosów
odpowiedź 7 maja 2020 przez dominik195k Obywatel (1,030 p.)
Moglby ktos to wlasnym jezykiem wyjasnic? Prosilbym nie podsylac stron ciezko mi cos stamtad zrozumiec
komentarz 8 maja 2020 przez TOWaD Mądrala (6,420 p.)
edycja 8 maja 2020 przez TOWaD
co oznacza stała dosłowna w kodze 9 ?

enum {....., wrzesien=9, ....} jak spotkasz w kodze wrzesien, to wiesz ze tyczy się miesiąca

a co oznaczają  stałe w kodze cyfry 6,7 ?

enum {poniedzałek=1, wtorek, sroda, czwartek, piatek, sobota, niedzela} to wiesz że dotyczy dnia tygodnia,

i nagle ktoś stwierdził, że niedziela to pierwszy dzień tygodnia, i zmieniaj cały kod odejmując 1 od każdej stalej dosłownej.

a z enum robisz tylko taki myk  {poniedzałek=2, wtorek, sroda, czwartek, piatek, sobota, niedzela=1} i gotowe;

zawsze możesz używać cyferek nikt ci nie broni, ale enum ma swoje zalety

enum {stazysta = 10, regular =100, szef=1000} zmieniasz punkty na

enum {stazysta = 15, regular =150, szef=1500} i nie wyszukujesz wszystkich setek , dziesiątek, i tysięcy w kodze;

if(punkty<szef && punkty >= stazysta) cout<<"to jest normalny pracownik";

W opus magnum jest to dobrze opisane.
0 głosów
odpowiedź 8 maja 2020 przez profesorek96 Szeryf (91,420 p.)

Najprościej rzecz ujmując jest to typ wyliczeniowy.

Wyobraźmy sobie taką sytuacje tworzysz funkcję która sprawdza czy dana liczba jest parzysta. Można ją wykonać tak:

bool czy_parzysta(int n)
{
	if(n%2==0)return 1;
	return 0;
}

Jest to jak najbardziej poprawne jednak co wtedy jeśli byś miał nie 2 możliwości ale np 3. Owszem mógłbyś zwracać int. Jednak nie było by to tak eleganckie. Lepiej jest stworzyć sobie typ wyliczeniowy, stałą symboliczną. Co z tego że pod tą stałą jest jakaś liczba. Jest ale nas to nie obchodzi. Nas jako programistów obchodzi kod, a w szczególności to by był łatwy do zrozumienia.

Zobacz na ten kod:

enum liczba{parzysta=1,nieparzysta=0};
liczba czy_parzysta(int n)
{
	if(n%2==0)return parzysta;
	return nieparzysta;
}

Tak naprawdę dalej zwracamy liczbę 1 jak jest parzysta, w przeciwnym wypadku 0. Jednak taki kod jest lepszy do zrozumienia. Łatwiej się go czyta.

Podobne pytania

0 głosów
1 odpowiedź 709 wizyt
pytanie zadane 23 grudnia 2017 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
0 głosów
2 odpowiedzi 2,337 wizyt
+1 głos
1 odpowiedź 540 wizyt
pytanie zadane 16 stycznia 2016 w C i C++ przez konrad99 Gaduła (4,090 p.)

93,381 zapytań

142,380 odpowiedzi

322,535 komentarzy

62,737 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...