Problem z utworzeniem kalkulatora - błąd w kodzie
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Problem z utworzeniem kalkulatora - błąd w kodzie

AutorWiadomość
Temat założony przez niniejszego użytkownika
Problem z utworzeniem kalkulatora - błąd w kodzie
» 2017-08-08 18:15:47
Witam. Jestem tu nowy i mam problem z utworzeniem niewielkiego kalkulatora, który ma odczytać znak arytmetyczny i wykonać obliczenia dla dwóch argumentów. Chodzi o warunek który ma za zadanie odczytać ten znak i wykonać instrukcję. Dla ustawienia np. znak == "+" występuje błąd iso c++ (komentarz) a po zmianie na '+' program uruchamia się ale nie odczytuje tego znaku. Kod poniżej.

C/C++
#include <iostream>
#include <string>
using namespace std;

int main()
{
    int operator_arytmetyczny;
    int pierwszy_argument;
    int drugi_argument;
    cout << "Wybierz operator arytmetyczny wpisujac jego znak z klawiatury." << endl;
    cin >> operator_arytmetyczny;
   
    if( operator_arytmetyczny == '+' ) //Gdy jest w kodzie tak: == "+" to wystepuje blad iso c++ forbids comparison between pointer and integer
    {
        cin >> pierwszy_argument;
        cin >> drugi_argument;
        cout << "pierwszy_argument + drugi_argument = " << pierwszy_argument + drugi_argument;
    }
    else if( operator_arytmetyczny == '-' )
    {
        cin >> pierwszy_argument;
        cin >> drugi_argument;
        cout << "pierwszy_argument - drugi_argument = " << pierwszy_argument - drugi_argument;
    }
    else if( operator_arytmetyczny == '*' )
    {
        cin >> pierwszy_argument;
        cin >> drugi_argument;
        cout << "pierwszy_argument * drugi_argument = " << pierwszy_argument * drugi_argument;
    }
    else if( operator_arytmetyczny == '/' )
    {
        cin >> pierwszy_argument;
        cin >> drugi_argument;
        cout << "pierwszy_argument / drugi_argument = " << pierwszy_argument / drugi_argument;
    }
    else
    {
        cout << "Ten kalkulator obsluguje tylko podstawowe operatory arytmetyczne np. + , - , * , / ";
    }
}
P-163881
» 2017-08-08 18:25:44
Jeżeli operator_arytmetyczny to ma być znak, to powinien być typu char.
P-163882
Temat założony przez niniejszego użytkownika
» 2017-08-08 18:40:11
Wielkie dzięki ! Program działa. Tylko mam pytanie, dlaczego przy użyciu w taki sposób "+" występuje błąd iso c++ a przy zamianie na '+' program działa poprawnie?
P-163883
» 2017-08-08 19:00:41
Ponieważ przy pomocy cudzysłowu informujesz kompilator, że jest to ciąg znaków - i w tym przypadku kompilatora nie mam obchodzi fakt, że to tylko jeden znak.
P-163884
» 2017-08-11 20:16:45
ja stworzylem taki kalkulator nie wiem czy to jest dobre rozwiazanie czy twoje lepsze ale chyba skoro oba dzialaja wiec nie ma wiekszego problemu.
Nie wiedzialem jak zakonczyc oparacje jezeli uzytkownik wybierze pierwsza liczbe 0 albo druga liczba bedzie 0. Zastosowalem "break" tylko moje pytanie brzmi czy mozna stosowac taki zapis jak ja to zrobilem jezeli chodzi o if?


#include <iostream>
using namespace std;
int main()
{
    int first;
    int second;
    int numer;
    do{
    cout<<"podaj pierwsza liczbe"<<endl;
    cin>>first;
    cout<<"podaj druga liczbe"<<endl;
    cin>>second;
   
    if( first==0 || second==0)
    break;
   
   
   
   
    cout<<"dodawanie nacisnij 1"<<endl;
    cout<<"odejmowanie nacisij 2"<<endl;
    cout<<"mnozenie nacisnij 3"<<endl;
    cout<<"dzielenie nacisnij 4"<< endl;
   
    cin>>numer;
   
   
   
    switch(numer){
    case 1:
    cout<<first+second<<endl;
    break;
    case 2:
    cout<<first-second<<endl;
    break;
    case 3:
    cout<<first*second<<endl;
    break;
    case 4:
    cout<<first/second<<endl;
    break;
    default:
    cout<<"wybierz numer od 1-4 tylko"<<endl;
   
}

}

while(numer>0);

return 0;
}

P-163921
» 2017-08-11 21:30:19
Ale po co break? Co chcesz przerywać? Jeśli zakończyć program to używasz
return 0;
. break służy do przerywania pętli lub wychodzeniu ze switcha.
ps.
[cpp]TWOJ KOD[/cpp]
P-163922
» 2017-08-12 13:52:04
no wiem ze break sluzy w petli switch. Dzieki wielkie za podpowiedz nawet ma to sens:-) dlaczego nie pomyslalem o tym wczesniej :-)
P-163931
« 1 »
 Strona 1 z 1