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

question-closed C++ Switch w switchu

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
1,431 wizyt
pytanie zadane 12 listopada 2017 w C i C++ przez Szczena Nowicjusz (160 p.)
zamknięte 17 listopada 2017 przez Szczena

Witam!
Jestem początkującym programistą, jeśli mogę się tak nazwać, bo w zasadzie robię to od kilku miesięcy za sprawą lekcji informatyki w klasie 2 licum. Otóż miałem zrobić uniwersalny kalkulator obliczający rzeczy podane nam przez nauczycielkę. Jedną z tych rzeczy chciałem zrobić w switchu, a ta z kolei znajdowała by się w innym switchu. Stąd pytanie czy tak w ogóle można? Otóż program wysypuje się właśnie w tym miejscu. Otóż po wybraniu opcji numer 11 program po prostu zaczyna liczyć i daje jakiś wynik. Gdy zmieniłem drugą zmienną w switchu z CHAR na INT program widzi tylko 1 opcje z 4 i wykonuję tylko ja. Poniżej zamieszczam link do pastebin'a. Mam nadzieje, że dobrze wytłumaczyłem problem i liczę że uzyskam pomoc smiley.

https://pastebin.com/FJnf1HMR

komentarz zamknięcia: Naprawiłem problem samemu

2 odpowiedzi

0 głosów
odpowiedź 12 listopada 2017 przez obl Maniak (51,280 p.)
edycja 12 listopada 2017 przez obl

Używasz zmiennych, które nie zostały zainicjalizowane wartością, poza tym po co w funkcji:

float srednia(float a, float n)
{
    float suma=0;
    float sr;
    cout<<"podaj ile liczb potrzebne do sredniej "<<endl;
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cout<<"podaj liczby do sredniej: "<<endl;
        cin>>a;
        suma+=a;
 
 
    }
sr= suma/n;
    return sr;
 
}

ci te argumenty a, i b skoro je inicjalizujesz w jej wnętrzu?

Lepiej to zrobić tak:

float srednia()
{
    float a, n;
    float suma=0;
    float sr;
    cout<<"podaj ile liczb potrzebne do sredniej "<<endl;
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cout<<"podaj liczby do sredniej: "<<endl;
        cin>>a;
        suma+=a;
 
 
    }
sr= suma/n;
    return sr;
 
}

To samo dotyczy pozostałych twoich funkcji.

Edit:

Poza tym case '11' nie zadziała ci tak jak powinno, bo przecież y jest typu char więc przechwyci jeden znak a nie dwa znaki. Wpiszesz dwa znaki czyli 11 to jeden zostanie zdjęty i przypisany do y-ka a drugi zostanie zdjęty przy kolejnym cin-ie.

komentarz 12 listopada 2017 przez Szczena Nowicjusz (160 p.)
Tak jak już mówiłem próbowałem inaczej pisać casy, albo zmienić typ na int. Niestety program dalej się sypie i widzi tylko jedną możliwość pod numerem 11
komentarz 12 listopada 2017 przez obl Maniak (51,280 p.)
Ale ten drugi switch to nowa lista wyboru więc może zaczynać się od 1 wzwyż.
komentarz 12 listopada 2017 przez Szczena Nowicjusz (160 p.)
Wciąż dzieje się to samo
0 głosów
odpowiedź 17 listopada 2017 przez Szczena Nowicjusz (160 p.)
Okej, okazało się że klamry były źle postawione. Wszystko zrobione, zamykam temat

Podobne pytania

0 głosów
1 odpowiedź 1,044 wizyt
0 głosów
0 odpowiedzi 234 wizyt
pytanie zadane 16 października 2016 w C i C++ przez Jakub Olszak Użytkownik (540 p.)
0 głosów
3 odpowiedzi 797 wizyt
pytanie zadane 19 marca 2017 w C i C++ przez akiihombre Początkujący (250 p.)

93,110 zapytań

142,088 odpowiedzi

321,611 komentarzy

62,451 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...