• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kłopot z funkcją switch

0 głosów
72 wizyt
pytanie zadane 8 listopada w C i C++ przez xxxasiap Nowicjusz (120 p.)
edycja 8 listopada przez xxxasiap
#include <iostream>


using namespace std;
char a;

int main()
{ char znak;;

    cout << "Witaj!" << endl;
    cout<<"Jaka chcesz wprowadzic liczbe"<<endl;
   cout<<"1.Dodatnia-wpisz +"<<endl;
    cout<<"2.Ujemna-wpisz -"<<endl;
    cout<<"3.Chce wpisac 0-wpisz 0"<<endl;
    cin>>znak;
    if(znak==1 ) cout<<"nieprawidlowy znak"<<endl;
    if(znak==2) cout<<"nieprawidlowy znak"<<endl;
    if(znak==3) cout<<"nieprawidlowy znak"<<endl;


    switch(znak)
    {
    case '+':
        cout<<"Podaj liczbe\ dodatni¹"<<endl;
        cin>>a;
        if(a<0) {cout<<"nieprawidlowa liczba"<<endl;}
        break;

    case '-':
        cout<<"Podaj liczbe ujemna"<<endl;
        cin>>a; if(a>0) {cout<<"nieprawidlowa liczba"<<endl;}
        break;
    case '0':
        cout<<"wpisano 0"<<endl;
        break;





    }
    return 0;
}

Witam, jak mam zabezpieczyć moją funkcję przed tym,że ktoś zamiast +,- czy też 0 użyje 1,2 bądź 3? 

Oraz jak mam określić,że np. kiedy użytkownik ma wpisać liczbę dodatnia,a wpisze ujemna wyskoczy komunikat,że jest źle?

3 odpowiedzi

+1 głos
odpowiedź 8 listopada przez radek024 Maniak (63,480 p.)

Masz zmienną int wybor oraz char znak. Switch uruchomi się w zależności od otrzymanej wartości zmiennej znak, a jej nie wpisujesz - tylko wybor.

komentarz 8 listopada przez xxxasiap Nowicjusz (120 p.)
faktyczmie,dziękuję bardzo za pomoc!
+1 głos
odpowiedź 8 listopada przez DragonCoder Stary wyjadacz (13,730 p.)
#include <iostream>

int main()
{
char wybor;
int a;

    std::cout << "Witaj!" << std::endl;
    std::cout<<"Jaka chcesz wprowadzic liczbe"<< std::endl;
    std::cout<<"1.Dodatnia-wpisz +"<< std::endl;
    std::cout<<"2.Ujemna-wpisz -"<< std::endl;
    std::cout<<"3.Chce wpisac 0-wpisz 0"<< std::endl;
    std::cin>>wybor;

    switch(wybor)
    {
    case '+':
        std::cout<<"Podaj liczbę dodatnią"<< std::endl;
        std::cin>>a;
    break;

    case '-':
        std::cout<<"Podaj liczbe ujemna"<< std::endl;
        std::cin>>a;
    break;
    case '0':
        std::cout<<"wpisano 0"<< std::endl;
    break;





    }
    return 0;
}

Twoim bledem byla zmienna, ktora przypisalas do switcha. Tzn pobieralas od uzytkownika co che zrobic, do zmiennej wybor, a rozpatrywalas switcha zmienna znak, ktora w najlepszy przypadku byla pusta w innym miala smieci w sobie. 

komentarz 8 listopada przez xxxasiap Nowicjusz (120 p.)
a mam pytanko, jak mam zabezpieczyć fukncję,żeby użytkownik wpisał tylko +,- i 0, a nie 1,2,3?
komentarz 8 listopada przez xxxasiap Nowicjusz (120 p.)
mam użyć funkcji if?
komentarz 8 listopada przez DragonCoder Stary wyjadacz (13,730 p.)
nie, default: kod i end i to tyle. Czyli takie ifowe else
+1 głos
odpowiedź 8 listopada przez Tpk Stary wyjadacz (12,660 p.)

Po co liczba całkowita wybor skoro sprawdzasz w switch'u po znak?

Nie masz tam menu więc raczej zbędna. 

1
komentarz 8 listopada przez xxxasiap Nowicjusz (120 p.)
zmieniłam to i teraz użyłam tylko znak i działa

Podobne pytania

0 głosów
4 odpowiedzi 156 wizyt
0 głosów
2 odpowiedzi 83 wizyt
pytanie zadane 29 października w C i C++ przez xBartosz4x Nowicjusz (140 p.)
0 głosów
1 odpowiedź 35 wizyt
pytanie zadane 22 października w C i C++ przez Dzemik Nowicjusz (140 p.)
Porady nie od parady
Pytania na temat serwisu SPOJ należy zadawać z odpowiednią kategorią dotyczącą tej strony.SPOJ

57,748 zapytań

102,787 odpowiedzi

212,076 komentarzy

29,694 pasjonatów

Przeglądających: 321
Pasjonatów: 14 Gości: 307

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...