• 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
87 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

+1 głos
odpowiedź 8 listopada 2018 przez radek024 Maniak (65,700 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!
+1 głos
odpowiedź 8 listopada 2018 przez DragonCoder Pasjonat (19,250 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 Pasjonat (19,250 p.)
nie, default: kod i end i to tyle. Czyli takie ifowe else
+1 głos
odpowiedź 8 listopada 2018 przez Tpk Pasjonat (23,520 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 166 wizyt
0 głosów
1 odpowiedź 103 wizyt
0 głosów
0 odpowiedzi 25 wizyt
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

63,362 zapytań

109,629 odpowiedzi

229,035 komentarzy

44,308 pasjonatów

Przeglądających: 186
Pasjonatów: 6 Gości: 180

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.

...