C++ / napisz program który słownie napisanej ocenie przypisuje liczbę (np. celujący a program podaje 6), z użyciem switch i case.

Odpowiedź :

Odpowiedź:

#include <iostream>

enum Ocena {

   NIEDOSTATECZNY = 1,

   DOPUSZCZAJACY,

   DOSTATECZNY,

   DOBRY,

   BARDZO_DOBRY,

   CELUJACY

};

int main() {

   Ocena ocena;

   ocena = DOPUSZCZAJACY;

   switch (ocena) {

       case NIEDOSTATECZNY: {

           std::cout << (int) NIEDOSTATECZNY;

           break;

       }

       case DOPUSZCZAJACY: {

           std::cout << (int) DOPUSZCZAJACY;

           break;

       }

       case DOSTATECZNY: {

           std::cout << (int) DOSTATECZNY;

           break;

       }

       case DOBRY: {

           std::cout << (int) DOBRY;

           break;

       }

       case BARDZO_DOBRY: {

           std::cout << (int) BARDZO_DOBRY;

           break;

       }

       case CELUJACY: {

           std::cout << (int) CELUJACY;

           break;

       }

       default: {

           std::cout << "Niepoprawna ocena";

           break;

       }

   }

   return 0;

}

Wyjaśnienie:

W c++ switch case nie obsługuje reprezentacji słownej (stringów i tablic charów), jedynie reprezentacje liczbowe. Dlatego użyłem enuma aby zaimitować słowne reprezentacje, a przy wyświetlani spowrotem castowałem je na liczbowe