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

Kłopot z funkcją switch

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
241 wizyt
pytanie zadane 8 listopada 2018 w C i C++ przez xxxasiap Nowicjusz (160 p.)
edycja 8 listopada 2018 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

0 głosów
odpowiedź 8 listopada 2018 przez radek024 Szeryf (77,160 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 2018 przez xxxasiap Nowicjusz (160 p.)
faktyczmie,dziękuję bardzo za pomoc!
0 głosów
odpowiedź 8 listopada 2018 przez DragonCoder Nałogowiec (36,500 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 2018 przez xxxasiap Nowicjusz (160 p.)
a mam pytanko, jak mam zabezpieczyć fukncję,żeby użytkownik wpisał tylko +,- i 0, a nie 1,2,3?
komentarz 8 listopada 2018 przez xxxasiap Nowicjusz (160 p.)
mam użyć funkcji if?
komentarz 8 listopada 2018 przez DragonCoder Nałogowiec (36,500 p.)
nie, default: kod i end i to tyle. Czyli takie ifowe else
0 głosów
odpowiedź 8 listopada 2018 przez pr0way Nałogowiec (41,020 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 2018 przez xxxasiap Nowicjusz (160 p.)
zmieniłam to i teraz użyłam tylko znak i działa

Podobne pytania

0 głosów
4 odpowiedzi 775 wizyt
0 głosów
2 odpowiedzi 251 wizyt
pytanie zadane 16 listopada 2024 w Sieci komputerowe, internet przez Koweee Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 102 wizyt
pytanie zadane 28 sierpnia 2024 w Sprzęt komputerowy przez tubylec01 Obywatel (1,550 p.)

93,433 zapytań

142,428 odpowiedzi

322,661 komentarzy

62,796 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...