Kalkulator

0

Czemu ciągle pokazuje mi znak niepoprawny?

#include <iostream>

using namespace std;

int main()
{
    double liczba1;
    double liczba2;
    char znak;
    cout << "Podaj pierwsza liczbe: ";
    cin >> liczba1;
    cout << "Podaj druga liczbe: ";
    cin >> liczba2;
    cout << "Podaj znak dzialania: ";
    cin >> znak;
    if (znak == '+' )
    {
        cout << liczba1 + liczba2;
    }
        if (znak == '-')
    {
        cout << liczba1 - liczba2;
    }
    if (znak == '*')
    {
        cout << liczba1 * liczba2;
    }
    if (znak == '/')
    {
        cout << liczba1 / liczba2;
        return 0;
    }
    else 
    {
        cout << "znak niepoprawny";
        return 0;
    }

}
1

int znak; a nie chciałeś czasem char znak;?

0
Czarri napisał(a):

Czemu ciągle pokazuje mi znak niepoprawny?

#include <iostream>

using namespace std;

int main()
{
    double liczba1;
    double liczba2;
    char znak;
    cout << "Podaj pierwsza liczbe: ";
    cin >> liczba1;
    cout << "Podaj druga liczbe: ";
    cin >> liczba2;
    cout << "Podaj znak dzialania: ";
    cin >> znak;
    if (znak == '+' )
    {
        cout << liczba1 + liczba2;
    }
        if (znak == '-')
    {
        cout << liczba1 - liczba2;
    }
    if (znak == '*')
    {
        cout << liczba1 * liczba2;
    }
    if (znak == '/')
    {
        cout << liczba1 / liczba2;
        return 0;
    }
    else 
    {
        cout << "znak niepoprawny";
        return 0;
    }

}

Teraz pokazuje mi i wynik i "znak niepoprawny"

0
Czarri napisał(a):

Teraz pokazuje mi i wynik i "znak niepoprawny"

Zamień końcówkę na

    else 
    {
        cout << "znak niepoprawny [" << znak << "]";
        return 0;
    }

to będziesz wiedział co za niepoprawny znak został wczytany. Ewentualnie użyj debugera

2
  1. używasz if zamiast else if
  2. wyświetlasz wynik w wielu miejscach
  3. nie sprawdzasz wyniku cin
  4. nie czytałeś https://dsp.krzaq.cc/post/445/jak-zadawac-pytania-na-forum/
0
KamilAdam napisał(a):
Czarri napisał(a):

Teraz pokazuje mi i wynik i "znak niepoprawny"

Zamień końcówkę na

    else 
    {
        cout << "znak niepoprawny [" << znak << "]";
        return 0;
    }

to będziesz wiedział co za niepoprawny znak został wczytany. Ewentualnie użyj debugera

zrobiłem tak jak mówisz, nie wiem o co chodzi z debugerem - dopiero zaczynam C++
teraz jest tak:
to jest już z panelu sterowania wpisałem 7,8 i +
Podaj pierwsza liczbe: 7
Podaj druga liczbe: 8
Podaj znak dzialania: +
15znak niepoprawny [+]

1

@vpiotr dał odpowiedź w swoim poście (punkt pierwszy) - zamień drugi i kolejny if na else if

0

Dzięki wszytskim

0

Ale potworek :)
Słyszałeś kiedyś o "switch"?

#include <iostream>

using namespace std;

int main()
{
    double liczba1;
    double liczba2;
    char znak;
    cout << "Podaj pierwsza liczbe: ";
    cin >> liczba1;
    cout << endl << "Podaj druga liczbe: ";
    cin >> liczba2;
    cout << endl << "Podaj znak dzialania: ";
    cin >> znak;
    cout << endl << "Result: ";
    switch (znak) {
        case '+':   cout << liczba1 + liczba2;
                    break;
        case '-':   cout << liczba1 - liczba2;
                    break;
        case '*':   cout << liczba1 * liczba2;
                    break;
        case '/':   cout << liczba1 / liczba2;
                    break;
        default:
            cout << "znak niepoprawny";
    }
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1