Egzekutor Opublikowano 6 Lipca 2009 Udostępnij Opublikowano 6 Lipca 2009 Witam mam problem. Mam oto taką instrukcję wyboru: int petla; switch(petla) { case 1: cout << " Wybrales 1 \n"; break; case 2: cout << " Wybrales 2 \n"; break; case 3: cout << " Wybrales 3 \n"; break; } No i wydaje mi się, że wszystko jest w porządku a jednak jeżeli kompiluje program on po prostu nie zwraca uwagi na tę pętlę i przechodzi do następnych czynności. Co jest w tej pętli nie tak? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Boro Casso Opublikowano 6 Lipca 2009 Udostępnij Opublikowano 6 Lipca 2009 int petla; cin>>petla; switch(petla) { case 1: cout << " Wybrales 1 \n"; break; case 2: cout << " Wybrales 2 \n"; break; case 3: cout << " Wybrales 3 \n"; break; } btw switch to nie pętla. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Egzekutor Opublikowano 6 Lipca 2009 Autor Udostępnij Opublikowano 6 Lipca 2009 Nadal pomija pętlę lecz teraz sam wybiera losowo "1 , 2 lub 3" Nie wiem co jest grane. Ps. No faktycznie pomyliłem się :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 6 Lipca 2009 Administratorzy Udostępnij Opublikowano 6 Lipca 2009 SWITCH TO NIE JEST PĘTLA To jest instrukcja wyboru. Pętla to jest coś, co się powtarza, czyli for, while, do until, repeat Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Egzekutor Opublikowano 6 Lipca 2009 Autor Udostępnij Opublikowano 6 Lipca 2009 Wiem, tylko mi się coś zchrzaniło bo myślałem o czym innym jak pisałem posta :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Boro Casso Opublikowano 6 Lipca 2009 Udostępnij Opublikowano 6 Lipca 2009 int nr = 0; cin >> nr; switch(nr) { case 1: cout << "Wybrałeś 1!\n"; break; case 2: cout << "Wybrałeś 2!\n"; break; } u mnie działa Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Egzekutor Opublikowano 6 Lipca 2009 Autor Udostępnij Opublikowano 6 Lipca 2009 Nie wiem dlaczego ale było dlatego źle, że przy definicji obiektu nie podałem wartości int petla; int petla = 0; //Jak tak napisze to jest dobrze . Dzięki za pomoc :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 6 Lipca 2009 Udostępnij Opublikowano 6 Lipca 2009 Jak przy definicji nie podasz wartości to zmienna przyjmuje jakąś całkowicie kosmiczną wartość. Tak iwęc nie była równa ani 1, ani 2, ani 3 wiec pomijała switcha. Proste. Jak przypisałeś 0 to też powinna pomijać więc domyślam się że wkleiłeś nam to jakiś okrojony z ważnych rzeczy kod. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 6 Lipca 2009 Administratorzy Udostępnij Opublikowano 6 Lipca 2009 switch powinien mieć też klauzulę default, bez tego to o kant dupy rozbić całe założenie tej instrukcji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności ANtY Opublikowano 6 Lipca 2009 Filar Społeczności Udostępnij Opublikowano 6 Lipca 2009 default wykonuje się, gdy wartość jest inna od uwzględnionych przez ciebie. Platyna nie powinno pomijać jeśli wcześniej jest cin bo chyba wtedy nadaje wartość... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 6 Lipca 2009 Udostępnij Opublikowano 6 Lipca 2009 cin wczytuje wartość z klawiatury (swoją drogą zwykle lepiej używać scanf) Poza tym ja mówiłem o jego kodzie, a on nie miał tam ani cina, ani nic. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności ANtY Opublikowano 6 Lipca 2009 Filar Społeczności Udostępnij Opublikowano 6 Lipca 2009 No to akurat racja. Mógłby pokazać cały kod, ale nvm. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
progio! Opublikowano 6 Lipca 2009 Udostępnij Opublikowano 6 Lipca 2009 cin wczytuje wartość z klawiatury (swoją drogą zwykle lepiej używać scanf) Jak już chcesz się tak rozdrabniać to cin wczytuje dane ze standardowego strumienia stdin - najczęsciej klawiatura, może to być jednak plik, wyjście innego programu. A scanf jest mało wydajny i nieobiektowy + w cpp powoduje czasem dziwne błędy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 6 Lipca 2009 Udostępnij Opublikowano 6 Lipca 2009 Z tego co ja wiem to scanfy i printfy są wydajniejsze od cinów i coutów. I wcale nie chciałem się rozdrabniać. Po prostu tak przy okazji wtrąciłem :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
progio! Opublikowano 6 Lipca 2009 Udostępnij Opublikowano 6 Lipca 2009 Z tego co ja wiem to scanfy i printfy są wydajniejsze od cinów i coutów. I wcale nie chciałem się rozdrabniać. Po prostu tak przy okazji wtrąciłem :P Korzystając z cstdio parametry nie są rozpoznywane od razu (możesz przekazać parametr liczbowy jako tekst, zapomnieć jakiegoś) i musisz sam je podawać - oznacza to że muszą być sprawdzane na etapie WYKONYWANIA programu, za każdym razem od nowa printf musi parsować jego format-string, a to jest po prostu bardzo niewydajne :P Pozatym strumienie łatwiej rozszerzyć, wystarczy przeciążyć operator np. << i możesz już robic std::cout << obiektTwojejklasy; :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 6 Lipca 2009 Udostępnij Opublikowano 6 Lipca 2009 No nie wiem. Kilka razy doświadczalnie udowodniłem że printf i scanf są wydajniejsze. Czasami mi zadanka się w czasie nie mieściły, wywłaszczało mi bo używałem cin i cout. A to, że scanf i prontf są dużo wygodniejsze to już jest niepodważalne :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
progio! Opublikowano 6 Lipca 2009 Udostępnij Opublikowano 6 Lipca 2009 Z której strony? Że trzeba pamiętać o %d, %s itp.? Spróbując sobie zrobić klase i printfnąć jej obiekt ;S W strumieniach jak mówiłem wystarczy tylko przeciążyć operator. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 6 Lipca 2009 Udostępnij Opublikowano 6 Lipca 2009 c out, in są wolniejsze. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
progio! Opublikowano 6 Lipca 2009 Udostępnij Opublikowano 6 Lipca 2009 Udowodnij, chyba że mówisz o czasach kiedy biblioteka strumieni była wrapperem cstdio. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Egzekutor Opublikowano 7 Lipca 2009 Autor Udostępnij Opublikowano 7 Lipca 2009 Skoro cin i cout są wolniejsze to dlaczego Grębosz nic nie wspomniał o scanf ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
progio! Opublikowano 7 Lipca 2009 Udostępnij Opublikowano 7 Lipca 2009 Bo printf/scanf jest z C i kiedyś jak standard był wdrażany to strumienie rzeczywiście były wolniejsze, ale teraz - SĄ lepsze. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 7 Lipca 2009 Udostępnij Opublikowano 7 Lipca 2009 Z tym że scanfy i printfy tyż zostały trochę zoptymalizowane w cstdio. Pisząc chociażby zadania pod OI ważne jest by ich używać bo przez durne cin i couty moze ci nieraz zadanie się wywłaszczyć. A co do wygody: Sory, ale nie wmówisz mi że wygodne jest pisanie durnego << za każdym razem jak chce inną zmienną wypisać. W printfie wszystko cacy piszę w jednym stringu. A jak ci %d i %c problemy sprawiają to tylko brak przyzwyczajenia. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi