typ wyliczeniowy enum

2013-08-04 11:11
0

Mam pytanie dotyczące typu wyliczeniowego.
Wszędzie gdzie znalazłem na kursach te typy to schematycznie wyglądało to tak:
enum nazwa_wyliczenia{lista_wyliczenia};
A w książce "Programuję w językach C/C++ i C++ Builder" Mirosława J. Kubiak mam taki kod(podam cały):

#include<iostream>//pozwala pisać za pomocą cout<<"";//obsługa strumieni I/O
#include<conio.h>

enum stan_zdrowia{
normalny, podgoraczkowy, goraczkowy
} stan;
int main(int argc, char* argv[])
{
float temp;
cout<<"Podaj temperature ciala: "<<endl;
cin>>temp;
if(temp<=37)
stan=normalny;
else
if(temp<37.5) stan=podgoraczkowy;
else stan=goraczkowy;
if(stan==normalny){
cout<<"Jestes zdrow"<<endl;
}
else{
cout<<"Twoje zdrowie jest zagrozone"<<endl;
switch(stan)
{
case podgoraczkowy:
cout<<"Badz ostrozny"<<endl;
break;
case goraczkowy:
cout<<"Idz do lekarza"<<endl;
break;
}
}
getch();
        return 0;
}

I tu się rozchodzi skąd się wzięła zmienna stan.
W książce schematycznie jest napisane enum nazwa_wyliczenia{lista_wyliczenia} lista_zmiennych;
stan jest jakąś zmienną typu enum? Wcześniej nie spotkałem takiego rozwiązania.
Nawet gdyby traktować stan_zdrowia jako zmienną, która coś tam zawiera, to przecież powinien być przecinek i dopiero zmienna stan.
Pytam się gdyż nie jestem pewien skąd się to wzięło.

zamiana znacznika <code class="c"> na <code class="cpp"> - fp

edytowany 1x, ostatnio: furious programming, 2013-08-04 12:12

Pozostało 580 znaków

2013-08-04 11:23

Zapis powyzej jest skrocona forma tego:

enum stan_zdrowia {
  blablabla, bla2, costamjeszcze, alesuper
};

enum stan_zdrowia stan;
edytowany 1x, ostatnio: n0name_l, 2013-08-04 11:23

Pozostało 580 znaków

2013-08-04 11:31
0

Aha. Czyli stan jest po prostu zmienną typu wyliczeniowego stan_zdrowia.
Wielkie dzięki n0name_l za szybką odpowiedź.

Pozostało 580 znaków

2013-08-04 11:58
1

To ja przy okazji powiem, że w C++ powinno się raczej używać enumów w stylu własnie C++.

enum slowa{
    ferrari, audi
};
enum marki_samochodow{
    ferrari, audi  
};

nie skompiluje się, http://ideone.com/6hJdNk

enum class slowa{
    ferrari, audi
};
enum class marki_samochodow{
    ferrari, audi  
};

wszysto cacy, http://ideone.com/ChxWvb

#include<iostream>
using namespace std;

enum class stan_zdrowia{
    normalny, podgoraczkowy, goraczkowy
};

int main(int argc, char *argv[]) {
    stan_zdrowia stan;
    float temp;

    cout<<"Podaj temperature ciala: "<<endl;
    cin>>temp;

    if(temp<=37)
        stan=stan_zdrowia::normalny;
    else if(temp<37.5) 
        stan=stan_zdrowia::podgoraczkowy;
    else 
        stan=stan_zdrowia::goraczkowy;

    if(stan==stan_zdrowia::normalny)
        cout<<"Jestes zdrow"<<endl;
    else {
        cout<<"Twoje zdrowie jest zagrozone"<<endl;
        switch(stan) {
        case stan_zdrowia::podgoraczkowy:
            cout<<"Badz ostrozny"<<endl;
            break;
        case stan_zdrowia::goraczkowy:
            cout<<"Idz do lekarza"<<endl;
            break;
        }
    }
    return 0;
}
edytowany 4x, ostatnio: spartanPAGE, 2013-08-04 12:15
sure, myslalem, ze o C chodzi :> - n0name_l 2013-08-04 12:11
* w C++11 :P - Patryk27 2013-08-04 12:19
Odniesienie C++ mowi o aktualnie nam panujacym standardzie, oznaczac trzeba poprzednie wersje jawnie :) - n0name_l 2013-08-04 12:23
Zawsze ktoś może ten post odnaleźć po latach, gdy we władzy będzie C++0xCAFEBABE, w którym to już ten ficzer będzie wycofany c: - Patryk27 2013-08-04 12:25
Po to jest data postu ;> - n0name_l 2013-08-04 12:26

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0