• 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
83 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 (64,360 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 (17,290 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 (17,290 p.)
nie, default: kod i end i to tyle. Czyli takie ifowe else
+1 głos
odpowiedź 8 listopada 2018 przez Tpk Pasjonat (15,160 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 158 wizyt
0 głosów
1 odpowiedź 62 wizyt
0 głosów
0 odpowiedzi 20 wizyt
Porady nie od parady
Możesz ukryć, zamknąć lub zmodyfikować swoje pytanie, za pomocą przycisków znajdujących się pod nim. Nie krępuj się poprawić pochopnie opublikowanego pytania czy zamknąć go po uzyskaniu satysfakcjonującej odpowiedzi. Umożliwi to zachowanie porządku na forum.Przyciski pytania

60,207 zapytań

105,878 odpowiedzi

219,906 komentarzy

32,422 pasjonatów

Przeglądających: 177
Pasjonatów: 3 Gości: 174

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.

...