Skocz do zawartości

Zablokowane Switch


Rekomendowane odpowiedzi

Opublikowano

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?

Opublikowano

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.

  • Administratorzy
Opublikowano

SWITCH TO NIE JEST PĘTLA

 

To jest instrukcja wyboru.

 

Pętla to jest coś, co się powtarza, czyli for, while, do until, repeat

Opublikowano

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

Opublikowano

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.

  • Administratorzy
Opublikowano

switch powinien mieć też klauzulę default, bez tego to o kant dupy rozbić całe założenie tej instrukcji.

  • Filar Społeczności
Opublikowano

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ść...

Opublikowano

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.

  • Filar Społeczności
Opublikowano

No to akurat racja. Mógłby pokazać cały kod, ale nvm.

Opublikowano
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.

Opublikowano

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

Opublikowano
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; :)

Opublikowano

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 :)

Opublikowano

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.

Opublikowano

Bo printf/scanf jest z C i kiedyś jak standard był wdrażany to strumienie rzeczywiście były wolniejsze, ale teraz - SĄ lepsze.

Opublikowano

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.

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ę...