[C++]Idiotoodporność w char.

0

Piszę program, którego jedną z funkcji jest przyjmowanie od użytkownika koloru w jakim ma być tworzony obrazek w formacie .svg. No i chciałbym, żeby do wyboru były tylko niektóre kolory:


    cout<<"Wybierz kolor, a nastepnie wpisz oznaczenie z nawiasu kwadratowego\n";
    cout<<"-----------------------------------------------------------------"<<endl;
    cout<<"niebieski [blue]      czerwony [red]\n";
    cout<<"  zolty [yellow]      czarny [black]\n";
    cout<<" zielony [green]        bialy [none]\n";
    cout<<"-----------------------------------------------------------------"<<endl;
    cout<<"Podaj kolor linii: ";
    cin>>stroke;
    cout<<endl;
    cout<<"Podaj wypelnienie: ";
    cin>>fill; 

Nie mogę tylko wpaść na to, jak zrobić w tym przypadku "idiotoodporność", żeby użytkownik nie mógł podawać cyfr, albo jakichś innych charów jak wymienione w tabelce. Proszę pomóżcie. Dzięki.

0

petla + instrukcja if?

0

Próbowałem to zrobić w taki sposób, że stworzyłem tablicę

char kolory[]={"blue", "red", "yellow", "black", "green", "none"}; 

a potem pętlę do-while(stroke=kolory), ale nie działa.

Jak się pisze komendę, że zmienna równa się dowolny element z tablicy?

0

Iteruj po tablicy albo jakiś kontener asocjacyjny np. to Masz nawet przydatny przykład.

0
  1. Ciągów znakowych nie porównuje się przez == (a = to operator przypisania) tylko przez strcmp()
  2. Skoro to jest C++ to użyj string...
0

A moglibyście napisać jak to zrobić na tym moim przykładzie, bo ja jakoś nie ogarniam..:(

0
walashnikov napisał(a)

Próbowałem to zrobić w taki sposób, że stworzyłem tablicę

char kolory[]={"blue", "red", "yellow", "black", "green", "none"}; 

To się skompilowało? Nie zauważyłem tego wcześniej myślałem, że korzystasz ze string'ów :)

Wykorzystuj bibliotekę standardową po to ona jest aby nie trzeba było kombinować i koła od nowa wymyślać.

    string color;
    cin >> color;
    string kolory [] = { "blue", "red", "yellow", "black", "green", "none" };
    set< string > colors( kolory, kolory + 6 );

    if( colors.find( color ) != colors.end() )
        cout << "prawidlowy kolor";
    else
        cout << "nieprawidlowy kolor";

    // lub

    /*for( unsigned i = 0; i < 6; ++i )
    {
        if( color == kolory[ i ] )
        {
            cout << "prawidlowy kolor";
            return 0;
        }
    }
    cout << "nieprawidlowy kolor";*/
    return 0;

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