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

Czemu musze wciskac enter za pierwszym razem ? FUNKCJA

0 głosów
191 wizyt
pytanie zadane 25 marca 2020 w C i C++ przez Sashimo Użytkownik (740 p.)

Chodzi o to czemu funkcja nie wczytuje się automatycznie tylko musze wcisknac pierw enter i dopiero wyskakuje pierwsza funkcja ;/  ogólnie wszystko dziala tylko nie moge tego zrozumiec ;/

 

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <limits>

using namespace std;

int wczytajliczbe()
{
    int a;

do{
        bool blad = cin.fail();
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(),'\n');
         cout<<"Podaj liczbe: ";
}
while(!(cin>>a));
    return a;
}

int wczytajliczbe2()
{
    int b;
do{
        bool blad = cin.fail();
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(),'\n');
         cout<<"Podaj liczbe2: ";
}while(!(cin>>b));
    return b;

}


int main()
{


int wybor;

do
{

cout<<"[1] Dodawanie"<<endl;
cout<<"[2] Odejmowanie"<<endl;
cout<<"[3] Mnozenie"<<endl;
cout<<"[4] Dzielenie"<<endl;
cout<<"[5] Rezygnuj"<<endl;
int liczba = wczytajliczbe();
int liczba2 = wczytajliczbe2();
int suma;
cout<<"Wybierz opcje; ";

cin>>wybor;


    switch (wybor)
    {

case 1 :
    suma=liczba+liczba2;
    cout<<suma<<endl;
    break;
case 2:
    suma=liczba-liczba2;
    cout<<suma<<endl;

    break;
case 3:
    suma=liczba*liczba2;
    cout<<suma<<endl;

   break;
case 4:
    if(liczba!=0)
    {
        suma=liczba/liczba2;
    cout<<suma<<endl;
    }
    else
    {
        cout<<"Nie wolno :P";
    }

     break;

    }

}while(wybor=5);




    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 25 marca 2020 przez Nabuchadonozor Gaduła (3,120 p.)

Witaj, pobawiłem się trochę z Twoim kodem. Otóż żeby nie było trzeba klikać spacji, zamieniłem int wybor na char wybor, nastepnie zamiast cin >> wybor, ustawilem wybor=_getch(), podejrzewam, że wiesz co trzeba w switchu zmienić.. więc nie będę tego tłumaczyć (nie zapomnij o bibliotece conio.h).

Następna podpowiedź: zamiast robić niepotrzebnie int liczba & liczba2, po prostu przy działaniach, wpisuj same nazwy metod, czyli suma = wczytajliczbe() + wczytajliczbe2() ----- i tak w każdym.

Nie kopiuj kodu, bo usunąłem z niego wszystkie składniki biblioteki limits, ponieważ szukałem błędu z różnych perspektyw. Miłego kodowania!


#include <iostream>
#include <cstdlib>
#include <ctime>
#include <limits>
#include <conio.h>

using namespace std;

int wczytajliczbe()
{
    int a;

    do {
        bool blad = cin.fail();
        cin.clear();
        cout << "Podaj liczbe: ";
    } while (!(cin >> a));
    return a;
}

int wczytajliczbe2()
{
    int b;
    do {
        bool blad = cin.fail();
        cin.clear();
        cout << "Podaj liczbe2: ";
    } while (!(cin >> b));
    return b;

}


int main()
{


    char wybor;

        cout << "[1] Dodawanie" << endl;
        cout << "[2] Odejmowanie" << endl;
        cout << "[3] Mnozenie" << endl;
        cout << "[4] Dzielenie" << endl;
        cout << "[5] Rezygnuj" << endl;
        int suma;
        cout << "Wybierz opcje: ";

        wybor = _getch();


        switch (wybor)
        {

        case '1':
            suma = wczytajliczbe() + wczytajliczbe2();
            cout << suma << endl;
            break;
        case '2':
            suma = wczytajliczbe() + wczytajliczbe2();
            cout << suma << endl;

            break;
        case '3':
            suma = wczytajliczbe() + wczytajliczbe2();
            cout << suma << endl;

            break;
        case '4':
            if ( wczytajliczbe() != 0)
            {
                suma = wczytajliczbe() / wczytajliczbe2();
                cout << suma << endl;
            }
            else
            {
                cout << "Nie wolno :P";
            }

            break;
        default: cout << "c4";

        }





    return 0;
}

 

komentarz 25 marca 2020 przez Nabuchadonozor Gaduła (3,120 p.)
A, nie dopowiedziałem najważniejszego, podczas deklaracji zmiennej int liczba = wczytajliczbe(); ---- automatycznie ją wywołujesz.

Podobne pytania

0 głosów
0 odpowiedzi 455 wizyt
0 głosów
0 odpowiedzi 230 wizyt
0 głosów
1 odpowiedź 353 wizyt

93,774 zapytań

142,731 odpowiedzi

323,383 komentarzy

63,378 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...