raVVal Opublikowano 12 Listopada 2010 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?
Shockah Opublikowano 12 Listopada 2010 Opublikowano 12 Listopada 2010 switch w wielu (?) językach programowania działa tylko na intach.
Farkraj Opublikowano 12 Listopada 2010 Opublikowano 12 Listopada 2010 tak, tez. pomysl jak to rozwiazac uzywajac tylko integerów
Administratorzy gnysek Opublikowano 12 Listopada 2010 Administratorzy 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.
kt1117 Opublikowano 13 Listopada 2010 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 ...... }
Administratorzy gnysek Opublikowano 13 Listopada 2010 Administratorzy Opublikowano 13 Listopada 2010 W tym co napisałeś, to już switcha nie potrzeba, bo tylko wydłuża kod.
kt1117 Opublikowano 13 Listopada 2010 Opublikowano 13 Listopada 2010 No tak, ale on chciał ze switchem.
Dragon Opublikowano 14 Listopada 2010 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"); }
Gość Opublikowano 18 Listopada 2010 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?
PsichiX Opublikowano 18 Listopada 2010 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.
baca Opublikowano 18 Listopada 2010 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).
PsichiX Opublikowano 18 Listopada 2010 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
Will Opublikowano 18 Listopada 2010 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.
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ę