Strona 1 z 1
instrukcja switch
: 29 stycznia 2008, 09:43
autor: migdas
Witam! Jestem pozacztkujacym programistą, zacząłem od C++ i mam problem a mianowicie:
Kod: Zaznacz cały
#include <iostream>
using namespace std;
int main()
{
char odp ;
cout << "Lubisz lody? ";
cin >> odp ;
switch(odp)
{
case 'Tak':
cout << "Tak? A jaki smak? ";
break;
case 'Nie':
cout << "Nie? A czemu? ";
break;
default:
cout << "Co? Powtorz!\n";
break;
}
return 0;
}
Kdy wpisze "Tak" lub "Nie" program przeskakuje do "default:" i konczy prace, czemu?
: 29 stycznia 2008, 10:17
autor: salmon
Bo char to jest znak, jeden znak. 'Tak' to są trzy znaki, żeby działało powinno to wyglądać tak:
Kod: Zaznacz cały
using namespace std;
int main()
{
char odp ;
cout << "Lubisz lody? ";
cin >> odp ;
switch(odp)
{
case 'T':
cout << "Tak? A jaki smak? ";
break;
case 'N':
cout << "Nie? A czemu? ";
break;
default:
cout << "Co? Powtorz!\n";
break;
}
return 0;
}
Po za tym przy kompilacji powinieneś dostać jakiś Warning, który wszystko wyjaśnia(a przynajmniej troche
)
: 29 stycznia 2008, 11:26
autor: Calasilyar
Nie lepiej to wrzucić do jakiejś małej tablicy, a nie rozróżniać po pierwszej literce? Myślę, że to byłoby bliższe zamysłu autora tematu.
: 29 stycznia 2008, 12:38
autor: salmon
a switch działa na tablicach? Jak już, to się stringa używa i wrzuca do if-a.
: 30 stycznia 2008, 17:59
autor: Immortal
Jak chcesz żeby czytał tak i nie to użyj stringów :
Kod: Zaznacz cały
#include <iostream>
#include <string>
using namespace std;
int main()
{
string odp ;
cout << "Lubisz lody? ";
cin >> odp ;
switch(odp)
{
case "Tak":
cout << "Tak? A jaki smak? ";
break;
case "Nie":
cout << "Nie? A czemu? ";
break;
default:
cout << "Co? Powtorz!\n";
break;
}
return 0;
}
EDIT: Zauważyłem teraz że chciałbyś wczytywać dopóki użytownik nie wpisze tak albo nie
Wnioskuje to po osatniej opcji. Jeśli tak to wypadałoby zrobić coś takiego:
Kod: Zaznacz cały
cin >> odp;
while (odp!="Tak" && odp!="Nie")
{
cout << "Nie rozumiem. Wpisz jeszcze raz : ";
cin >> odp;
}
//dopiero tutaj case
Btw
Program oczywiście nmie zareaguje na "nie" wpisane małymi literami
: 30 stycznia 2008, 18:14
autor: salmon
[quote="Immortal"]#include <iostream>
#include <string>
using namespace std]Kompilowałeś to chociaż?
: 30 stycznia 2008, 23:41
autor: Immortal
salmon pisze:Kompilowałeś to chociaż?
Nie kompilowałem... Naprawde sorry za wprowadzenie w błąd switch przecież nie obsługuje stringów... To by trzeba na ifach zrobić...