Potrzebujesz pomocy z C, C++, perl, python, itp.
migdas
Posty: 11 Rejestracja: 08 stycznia 2008, 19:51
Post
autor: migdas » 29 stycznia 2008, 09:43
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?
salmon
Beginner
Posty: 296 Rejestracja: 12 października 2007, 23:28
Lokalizacja: Gliwice/Bielsko-Biała
Post
autor: salmon » 29 stycznia 2008, 10:17
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
)
Calasilyar
Posty: 26 Rejestracja: 17 października 2007, 14:50
Post
autor: Calasilyar » 29 stycznia 2008, 11:26
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.
salmon
Beginner
Posty: 296 Rejestracja: 12 października 2007, 23:28
Lokalizacja: Gliwice/Bielsko-Biała
Post
autor: salmon » 29 stycznia 2008, 12:38
a switch działa na tablicach? Jak już, to się stringa używa i wrzuca do if-a.
Immortal
Posty: 31 Rejestracja: 11 grudnia 2007, 12:15
Lokalizacja: Kraków
Post
autor: Immortal » 30 stycznia 2008, 17:59
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
salmon
Beginner
Posty: 296 Rejestracja: 12 października 2007, 23:28
Lokalizacja: Gliwice/Bielsko-Biała
Post
autor: salmon » 30 stycznia 2008, 18:14
[quote="Immortal"]#include <iostream>
#include <string>
using namespace std]Kompilowałeś to chociaż?
Immortal
Posty: 31 Rejestracja: 11 grudnia 2007, 12:15
Lokalizacja: Kraków
Post
autor: Immortal » 30 stycznia 2008, 23:41
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ć...