raVVal Opublikowano 12 Listopada 2010 Udostępnij Opublikowano 12 Listopada 2010 Chodzi o to że gdy chcę zrobic tak: switch (odp) { case "Dzieńdobry" || "Witam" || "dzieńdobry" || "witam" || "dziendobry" || "Dziendobry" : powaga = 3; break; case "Serwus" || "serwus" || "Cześć" || "cześć" || "czesc" || "Czesc" || "Hej" || "hej" : powaga = 2; break; case "Elo" || "elo" || "siema" || "Siema" || "Ema" || "ema" || "Emo" || "emo" : powaga = 1; break; default : napisz("Dlaczego się nie przywitasz?n"); powaga = 1; break; } to wyskakuje błąd 14 C:Dev-CppGGmain.cpp switch quantity not an integer edytor to dev-c++ Przez co mam ten błąd? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Shockah Opublikowano 12 Listopada 2010 Udostępnij Opublikowano 12 Listopada 2010 switch w wielu (?) językach programowania działa tylko na intach. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
raVVal Opublikowano 12 Listopada 2010 Autor Udostępnij Opublikowano 12 Listopada 2010 w c++ tez ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Farkraj Opublikowano 12 Listopada 2010 Udostępnij Opublikowano 12 Listopada 2010 tak, tez. pomysl jak to rozwiazac uzywajac tylko integerów Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 12 Listopada 2010 Administratorzy Udostępnij Opublikowano 12 Listopada 2010 Nie wiem co to za język, ale: case "costam": case "inne costam": case "kolejne costam": <...>; break; Edit: ah, C++, dopiero zajarzyłem po dziale forum... no jeżeli nie da się jak wyzej, to nie da sie pewnie wcale. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 13 Listopada 2010 Udostępnij Opublikowano 13 Listopada 2010 if odp="Dzień Dobry" or odp="Witaj" or ... { nr_odp=1 } if odp="Serwus" or odp=.... { nr_odp=2 } itd. switch(nr_odp) { case 1: powaga=3 ...... } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 13 Listopada 2010 Administratorzy Udostępnij Opublikowano 13 Listopada 2010 W tym co napisałeś, to już switcha nie potrzeba, bo tylko wydłuża kod. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 13 Listopada 2010 Udostępnij Opublikowano 13 Listopada 2010 No tak, ale on chciał ze switchem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dragon Opublikowano 14 Listopada 2010 Udostępnij Opublikowano 14 Listopada 2010 To to musi być ze switchem? Według mnie chyba powinno wystarczyć ElseIf. EDIT Nie no, bez jaj. Switch z tego co ja wiem jest TYLKO do liczb całkowitych, więc jak chcesz pracować na string'ach to musisz użyć ElseIf. W każdym razie ja innego rozwiązania nie widzę... EDIT2 Jedź takim sposobem i gites xD (jedyny minus taki że to będzie chyba długi kod): #include <iostream> #include <string> using namespace std; int main() { string dd ("Dziendobry"); string dw ("Dobrywieczor"); string odp; cout << "Napisz 'Dziendobry' lub 'Dobrywieczor'"; cin >> odp; if (odp == dd) { cout << "Napisales Dziendobry"; } else if (odp == dw) { cout << "Napisales Dobrywieczor"; } else if (odp != dw || odp != dd) { cout << "Nie znam takiego!"; } system("pause>nul"); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 18 Listopada 2010 Udostępnij Opublikowano 18 Listopada 2010 Wiesz jaki if jest niewydajny przy dużej ilości warunków? Z tego co mi wiadomo, każdy string jest też liczbą. Czyli może dobrym sposobem byłoby konwertowanie stringa na int? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 18 Listopada 2010 Udostępnij Opublikowano 18 Listopada 2010 Wiesz jaki if jest niewydajny przy dużej ilości warunków? poprzyj argumentem. string to nie liczba, a cstring to wskaznik. nie mozesz od tak zamienic string na liczbe, jesli string nie zawiera tekstowej wartosci tej liczby. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
baca Opublikowano 18 Listopada 2010 Udostępnij Opublikowano 18 Listopada 2010 A nie lepiej zrobić w enum odpowiedniki i za ich pomocą użyć switch'a np.: GML const char *lista[] = { "napis 1", "napis 2", ...}; enum { ENAPIS1 = 0, ENAPIS2, ... }; switch(mapis) { case ENAPIS1: ... break; case ENAPIS2: ... break; } (Jeżeli koniecznie chcesz switch'a). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 18 Listopada 2010 Udostępnij Opublikowano 18 Listopada 2010 robi cos typu bota do gadu, wiec nic mu nie dadza enumy, zamiana na inty itp. musi trawic bezposredni tekst. a to wcale zajmujace nie jest, patrz na moc dziesiejszych procesorow, a ajk malo wymaga porownanie napisow Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 18 Listopada 2010 Udostępnij Opublikowano 18 Listopada 2010 string to nie liczba, a cstring to wskaznik. nie mozesz od tak zamienic string na liczbe, jesli string nie zawiera tekstowej wartosci tej liczby. Czary mary, hokus pokus: hashing. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się