Witam! Jak mogę zrobić w C++, gdy mam np. takie enum
enum kolory { Zielony = 2; Czerwony = 3; Niebieski =5 };
że wypisuje mi na wyjście jakie liczby są w danym enum, najlepiej za pomocą pętli for
Witam! Jak mogę zrobić w C++, gdy mam np. takie enum
enum kolory { Zielony = 2; Czerwony = 3; Niebieski =5 };
że wypisuje mi na wyjście jakie liczby są w danym enum, najlepiej za pomocą pętli for
Witam,
W prostej pętli zwykłego enum’a raczej się nie da wypisać. Enum nie przedstawia się i nie podaje swojej ilości (ilości elementów) ani nie jest w żaden sposób zaindeksowany.
Także na Twoje pytanie ja bym odpowiedział, że się nie da. Trzeba użyć bardziej zaawansowanych struktur np. wektora, albo mapy. Ale to chyba byłby przerost formy nad potrzebami (oczywiście w tej chwili nie znam Twoich potrzeb i wymagań co do programu).
Powodzenia
Witam,
takie programy mają raczej na celu oswojenie z językiem niż naukę pisania funkcjonalnych aplikacji, więc rozwiązanie będzie proste, ale i z przerostem formy nad treścią
Jak wiadomo, z reguły enuma, (wyliczeniowego typu danych), jeśli się już używa to raczej wraz z instrukcją sterującą switch.
W zadaniu masz powiedziane, że musi pojawić się też pętla for, więc powinno wyglądać to tak:
#include
#include
using namespace std;
enum Colors {
white, orange, red, blue, green, black
};
int main() {
for (int i = 0;; i++) {
switch (i) {
case (white): {
cout << white << endl;
break;
}
case (orange): {
cout << orange << endl;
break;
}
case (red): {
cout << red << endl;
break;
}
case (blue): {
cout << blue << endl;
break;
}
case (green): {
cout << green << endl;
break;
}
case (black): {
cout << black << endl;
break;
}
default:
exit(EXIT_SUCCESS);
}
}
}
Jeśli chodzi o przypadek,
enum Colors {
zielony = 2, czerwony = 3, niebieski = 5
};
gdzie lista elementów ma przypisane konkretne wartości sprawa wygląda trochę inaczej. Enum przyjmuje tylko wartości nieujemne, czyli od zera do zakresu inta. Załóżmy, że nie znamy ilości elementów oraz przypisanych im wartości, po prostu chcemy wszystko wypisać.
int main() {
unsigned int scope = (unsigned int) pow(2, sizeof(int) * 8); //zasięg unsigned int
for (unsigned int i = 0; i <= scope; i++) {
switch (i) {
case (zielony): {
cout << zielony << endl;
break;
}
case (czerwony): {
cout << czerwony << endl;
break;
}
case (niebieski): {
cout << niebieski << endl;
break;
}
}
}
}
Program oczywiście nie ma większego sensu, ale na początek nauki wystarczy
Pozdrawiam,
S.
Sylwia85 , to co próbujesz tu wcisnąć nie ma żadnego sensu.
np:
for(int i=0;;i++) { switch(i) { ... [/code]
można użyć:
[code=php]for(Colors c=white;c=black;++c) coutcendl;
… o wiele krótsze i znacznie czytelniejsze.