Skocz do zawartości

Zablokowane Switch


Egzekutor

Rekomendowane odpowiedzi

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

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

  • Filar Społeczności

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

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

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

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

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

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...