Zaawansowany kalkulator
Ostatnio zmodyfikowano 2015-04-20 19:34
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 #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; }
|
|
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. |
|
pekfos |
» 2015-04-20 19:14:31 |
|
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 *. |
|
« 1 » |