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

Typ wyliczeniowy enum Cpp

VPS Starter Arubacloud
0 głosów
580 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,000 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,000 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,270 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 (5,700 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ź 645 wizyt
pytanie zadane 23 grudnia 2017 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
0 głosów
2 odpowiedzi 1,875 wizyt
+1 głos
1 odpowiedź 487 wizyt
pytanie zadane 16 stycznia 2016 w C i C++ przez konrad99 Gaduła (4,090 p.)

92,452 zapytań

141,262 odpowiedzi

319,077 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...