Switch pokazuje liczby

0

Witam!
Ostatnio na lekcjach informatyki pojawił się u nas c++. I mam problemik z programikiem.
Zadaniem tego programiku miało być przyjęcie imienia,wieku oraz profesji ,a na końcu wyświetlenie tych informacji. Mógłby ktoś powiedzieć co zrobiłem źle bo na końcu wyskakuje mi zamiast nazwy profesji cyfra którą wpisałem w konsoli ;<.

Próbowałem w Devie zrobić coś takiego:

 #include <iostream>
#include <cstdio>
#include <string>
using namespace std;

int main()
{
string znak;
int wiek;
int profesja;

cout<<"Podaj nazwe postaci: ";
cin>>znak;

cout<<"Twoja nazwa to "<< znak <<endl;
cout<<"Dobrze teraz podaj swoj wiek: ";
cin>>wiek;
if(wiek>=18)
{
cout<<"Masz "<<wiek<<" lat, a wiec spelniasz warunki i mozesz rozpoczac gre\n";
cout<<"Wybierz swoja profesje: Druid(1), Wojownik(2), Lucznik(3),\n Czarodziej(4), Barbarzynca(5)";
cin>>profesja;

switch(profesja)
{
case 1: cout<<"Druid"; break;
case 2: cout<<"Wojownik"; break;
case 3: cout<<"Lucznik"; break;
case 4: cout<<"Czarodziej"; break; 
case 5: cout<<"Barbarzynca"; break;
default: cout<<"Giermek"; break;
}
}
else
{
cout<<"Niestety jestes za mlody zeby rozpoczac gre, masz dopiero "<<wiek<<" lat"<<endl;
}

cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;

cout<<"Dobrze wiec chyba moze rozpoczac gre. Masz na imie "<<znak<<", masz lat "<<wiek<<" i jestes "<<profesja ;

cin.ignore();
getchar();
return 0;
}

Z góry dzięki!

0

int profesja;
...
cout<< [...] <<profesja ;

Nic dziwnego, że pokazuje liczbę.

0

A da jakoś to przerobić by działało w switchu(jakies przekształcanie z liczb czy coś) czy tylko Ify mi pozostają ?

1

Ja z reguły jeśli potrzebuję zamienić wartość enuma na string rejestruję sobie wszystkie te wartości w jakiejś mapie i potem z niej pobieram.

0

enum?

0

Radzę zmienić DEV-a na coś zgodnego z aktualnie używanym c ++, co do samego problemu to:

#include <iostream>
#include <string>

using namespace std;


int main()
{
    string tabprofesji[6] = {"Giermek", "Druid", "Wojownik", "Lucznik", "Czarodziej", "Barbarzynca"};
    cout << "podaj profesję";
    int profesja;
    cin >> profesja;
    if (profesja < 1 || profesja > 5) profesja = 0;
    cout << tabprofesji[profesja];
}
 

Możesz też oczywiście stworzyć stringa i w switchu za niego podstawiać stosowny napis, ale ten sposób moim zdaniem będzie prostszy

0

Dziękuje za odpowiedź, temat do zamknięcia.

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