Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zaawansowany kalkulator

Ostatnio zmodyfikowano 2015-04-20 19:34
Autor Wiadomość
JMII89
Temat założony przez niniejszego użytkownika
Zaawansowany kalkulator
» 2015-04-20 18:39:38
Witam,
tworze taki zaawansowany kalkulator. Chodzi o to ,że w zwykłym podstawowym kalkulatorze można obliczyć sumę na jednym działaniu czyli 2+2 . A ja robie coś takiego , że można pare razy użyć operatorów aby obliczyć sumę liczb. I mam pewien problem .
1.Jak podzielić te wszystkie operacje oraz liczby tak aby potem obliczyć sumę liczb.
2.W jaki sposób można dodać funkcję aby obliczać sumę liczb tak jak jest w matematyce ? Pierwszy nawias , potem mnożenie lub dzielenie itp...

Mój kod jest taki , że pozwala mnożyć , dzielić , dodawać, odejmować liczby ale tylko od 0-9 bo liczby dwucyfrowe się dzielą na 2 indeksy

C/C++
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <cctype>

int main()
{
    std::string dzialanie;
    std::cout << "Podaj dzialanie : ";
    getline( std::cin, dzialanie );
   
    std::vector < int > liczby;
    std::vector < char > operacje;
   
    for( auto i: dzialanie )
    {
        if( isdigit( i ) )
        {
            int x = i - '0';
            liczby.push_back( x );
        }
       
        else
        {
            operacje.push_back( i );
        }
    }
   
   
    int suma = 0;
   
    int operacja_counter = 0;
   
    int counter = 0;
   
    int pierwsza_liczba = 0;
   
    int druga_liczba = 0;
   
    for( int i = 0; i < liczby.size(); i++ )
    {
        ++counter;
       
        if( counter == 1 )
        {
            pierwsza_liczba = liczby[ i ];
        }
       
        else if( counter == 2 )
        {
            druga_liczba = liczby[ i ];
        }
       
        char operacja;
       
       
        if( counter == 2 )
        {
            for( int i = operacja_counter; i < operacje.size(); i++ )
            {
                operacja = operacje[ i ];
                break;
            }
           
            if( operacja == '+' )
            {
                suma = pierwsza_liczba + druga_liczba;
                pierwsza_liczba = suma;
            }
           
           
            if( operacja == '-' )
            {
                suma = pierwsza_liczba - druga_liczba;
                pierwsza_liczba = suma;
            }
           
            if( operacja == '*' )
            {
                suma = pierwsza_liczba * druga_liczba;
                pierwsza_liczba = suma;
            }
           
            if( operacja == '/' )
            {
                if( pierwsza_liczba != 0 && druga_liczba != 0 )
                {
                    suma = pierwsza_liczba / druga_liczba;
                    pierwsza_liczba = suma;
                }
            }
           
            operacja_counter++;
            counter = 1;
        }
    }
   
    std::cout << "Wynik to : " << suma << std::endl;
   
    system( "pause" );
    return 0;
}
P-131212
Piastlis
» 2015-04-20 19:02:08
Kiedyś dawno temu napisałem swój pierwszy program w C.Nie pierwszy w ogóle bo wcześniej znałem Basik i Pascal.I to był akurat kalkulator na liczbach zespolonych.Takie zadanie musisz podzielić na 2 etapy.Przetworzenie tekstu i obliczenie.
P-131215
pekfos
» 2015-04-20 19:14:31
P-131217
Piastlis
» 2015-04-20 19:34:49
Co do samych obliczeń przyda się tzw notacja polska.Nie używa się w niej nawiasów.Po prostu jest stos.(A+B)*C w tej notacji wygląda inaczej: A B + C *.
 
P-131218
« 1 »
  Strona 1 z 1