nie widzi tekstu wpisanego w zmiena

0

Witam.
Pisze chwile program i na różne możliwości próbuje przypisać tekst do zmiennej jak poniżej w kodzie

    int licz;
cin>>licz;
char moja;
switch(licz)
{
case 1:{ char moja[]="papier"; break;

}
case 2:{ char moja[]="kamien"; break;}
case 3:{ char moja[]="nozyce"; break;}
default:{cout<<"zly wybor";break;}

}
cout<<moja<<endl;
 

dla czego zamiast wyświetlić napis wyświetla wyświetla puste pole.
najgorzej że murze działać na zmiennej char.

0

w każdym case'ie tworzysz zmienną tymczasową, co więcej, twoja zmienna moja to znak, jeśli chcesz wpisać do niej ciąg znaków, to musisz z tego zrobić tablicę, lub wskaźnik który będzie na nią wskazywał. Tymczasowe zmienne papier, kamien, norzyce, one się tworzą, ale wyświetlą się tylko jeśli dasz cout przed breakiem. Zrób tak:

int licz;
cin >> licz;
char moja[ 16 ];
stwitch( licz )
{
    case 1: strcpy( moja. "papier" );
        break;
    case 2: strcpy( moja, "kamien" );
        break;
    case 3: strcpy( moja, "nozyce" );
        break;

    default: cout << "zly wybor";
}

cout << moja << endl;
0

char moja to jest po prostu zmienna char majaca 1 bajt i mogaca zapisac 1 znak. Natomiast traktujesz ja jako tablice i probujesz przypisac ciag znakow. Operujesz tym samym na nieznanym obszarze pamieci. Reszta jw.

int main()
{
    string slowo;
    int wybor;
    while(cin >> wybor)
    {
        switch(wybor)
        {
        case 1: slowo = "Papier\n";
            break;
        case 2: slowo = "Kamien\n";
            break;
        case 3: slowo = "Nozyce\n";
            break;
        default: slowo = "Zly wybor\n";
        }
        cout << slowo;
    }
    return 0;
}
0

Po kiego tu w ogóle ten switch?

char *co[]={"papier","kamien","nozyce","zly wybor"};
unsigned licz;
cin>>licz;
cout<<co[min(licz,sizeof(co)/sizeof(*co))]<<endl;

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