• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Pomijanie cout w switchu ( C++)

Object Storage Arubacloud
+1 głos
198 wizyt
pytanie zadane 22 kwietnia 2018 w C i C++ przez koniak20 Początkujący (390 p.)
zamknięte 29 kwietnia 2018 przez koniak20


#include <iostream>
#include <cstdlib>
#include <fstream>


using namespace std;

char wybor;
int main()
{
    while (true)

    {


        cout<<endl<<"1 Sprawdzanie plci"<<endl;
        cout<<"2 Zapisywanie wyrazow od tylu"<<endl;
        cout<<"3 wyjscie"<<endl;
        wybor=getchar();
        switch(wybor)
        {
        case '1' :
        {

            string imie;
            cout<<endl<<"Podaj swoje imie:";
            cin>>imie;
            int dlugosc=imie.length();
            if(imie[dlugosc-1]=='a')
                cout<<"Wydaje mi sie ze jestes kobieta"<<endl;
            else
                cout<<"Wydaje mi sie ze jestes mezczyzna"<<endl;
        }

        break;
        case '2':
        {
            string slowo;
            cout<<"Podaj jakis wyraz: "<<endl;
            getline(cin,slowo);
            int dlugosc2=slowo.length();
            for (int i=dlugosc2-1; i>=0 ; i--)
            {
                cout<<slowo[i];
            }

        }
        break;
        case '3':
            exit(0);
            break;
        default:
            break;
        }
        getchar();
        getchar();
        system("cls");
    }
    return 0;
}

Problem jest taki , że gdy wchodzę w case z 2.
Wpisuje jakiś wyraz do zmiennej słowo i  od razu pomija mi pętle i wychodzi z case.
Gdy np. skopiuje ten kod i wsadzę przed pętle while to wszystko działa, ale gdy np.  zamienię go z 1 casem to dalej dzieje się to samo. 

komentarz zamknięcia: Rozwiązano problem
komentarz 22 kwietnia 2018 przez Aisekai Nałogowiec (42,190 p.)
A cout z case'1' się pojawia teraz czy nie?
komentarz 22 kwietnia 2018 przez koniak20 Początkujący (390 p.)
Działa bez problemu tak samo jak case '3'
komentarz 22 kwietnia 2018 przez Aisekai Nałogowiec (42,190 p.)
A sprawdzales, co rzeczywiście siedzi w zmiennej slowo? Czy w ogóle, się cokolwiek do niej zapisuje, choćby prostym coutem czy debbugerem?
komentarz 22 kwietnia 2018 przez koniak20 Początkujący (390 p.)
Dałem cout w parę miejsc w programie i nic się nie wyświetla (przerzuciłem tworzenie zmiennej przed maina), z tego wynika ,że nic się tam nie zapisuje?

1 odpowiedź

+2 głosów
odpowiedź 22 kwietnia 2018 przez Qwerty96 Stary wyjadacz (13,580 p.)
wybrane 22 kwietnia 2018 przez koniak20
 
Najlepsza
getchar pobiera jeden znak ze strumienia wejściowego. Po wciśnięciu entera zostanie w strumieniu znak nowej linii, który zostanie wczytany przez getline'a. Przez to string jest pusty i pętla nie wykonuje się ani razu. Rozwiązaniem jest wczytanie tego znaku nowej linii przed wywołaniem std::getline.
komentarz 22 kwietnia 2018 przez koniak20 Początkujący (390 p.)

Dzięki wielkie :D. 
Z tego co ty napisałeś wynika, że jak wstawia tam getline dwa razy o tak 

 cout<<"Podaj jakis wyraz: "<<endl;
            getline(cin,slowo);
            getline(cin,slowo);

To za pierwszym razem wczyta ,,pustke" a za drugim razem wyraz i owszewm działa.
Jeszcze raz dzięki wielkie.

Podobne pytania

0 głosów
1 odpowiedź 292 wizyt
0 głosów
1 odpowiedź 921 wizyt
0 głosów
2 odpowiedzi 1,228 wizyt
pytanie zadane 12 listopada 2017 w C i C++ przez Szczena Nowicjusz (160 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...