Kalkulator z nieograniczoną liczbą działan C++
Ostatnio zmodyfikowano 2012-10-11 16:23
reshi Temat założony przez niniejszego użytkownika |
Kalkulator z nieograniczoną liczbą działan C++ » 2012-10-03 20:54:39 Witam chciałbym zrobić kalkulator z nieograniczoną liczbą działań np. 5+5+20*10-20/50*25*5/223*42333-32=... Tylko jak to zrobić? Mój kolega jest na końcu 1 poziomu waszego kursu z dodatkiem że co drugą lekcję pomijał a już to zrobił ! Nie wiem jak ale to zrobił. W każdym razie może mi ktoś w tym pomóc ? Zrobiłem takie coś oczywiście to jest źle bo nie wiem jak to zrobić żeby zrobić takowy kalkulator. #include <iostream> #include <cstdlib> #include <ctime> using namespace std; void dodac() { } void odjac() { } void mnoz() { } void dziel() { } void kalkulator( int dzialanie ) { switch( dzialanie ) { case 1: { dodac(); } break; case 2: { odjac(); } break; case 3: { mnoz(); } break; case 4: { dziel(); } break; } } int main() { srand( time( 0 ) ); int tablica[ 200 ]; int dzialanie; cout << "Podaj rodzaj dzia³ania \n[1]Dodaj[2]Odjac\n[3]Mnozyc\n[4]Dzieliæ\n"; cin >> dzialanie; kalkulator( dzialanie ); return 0; }
Jak teraz zrobić żeby tam to dodać te myślałem nad pętlą white ale nie jest to możliwe gdy pojawia się mnożenie i dzielenie. Wiem co zrobić bo myślałem nad takim czymś że np jest podstawowe 5+5 i potem dodajesz działanie i kolejna liczba i jak już masz wszystko wtedy wciskasz = i masz wynik czy gdzieś co każdy krok jest menu i tam np 5 odpowiada wynik. Można by to zrobić w switch ale wtedy była by to ograniczona ilość działań dość mocno oraz kod wydaje mi się ze nie wyglądał by najlepiej. Ma ktoś pomysł jak zrobić kalkulator z wieloma działaniami w jednym przykładzie ? |
|
DejaVu |
» 2012-10-03 22:01:46 Nie patrz na kolegę tylko samodzielnie przeczytaj jeszcze raz rozdziały, których nie do końca rozumiesz. Aby napisać kalkulator o którym wspomniałeś wystarczy Ci wiedza z kursu C++ do rozdziału Pętla do ... while włącznie. Niepotrzebnie pchasz się w funkcje, skoro pętli dobrze nie opanowałeś. Co więcej w tym kodzie niczego nie pokazałeś. Postaraj się poskładać logicznie klocki w całość (i nie używaj do tego żadnych tablic, bo są zbędne). |
|
Admixior |
» 2012-10-03 22:02:52 w prosty sposób możesz zrobić kalkulator który nie będzie brał pod uwagę kolejności najpierw potęgi później () dalej /* i +-. Jeżeli nie zależy ci na tym to jest to banalne. W innym przypadku już będzie ciężej. A dokładnie będziesz musiał zajrzeć w: http://pl.wikipedia.org/wiki/Odwrotna_notacja_polska lub samemu zrobić algorytm np na rekurencji (aczkolwiek odwrotna notacja polska nie jest trudna) ;] Więc napisz czy Ci zależy na kolejności czy nie. |
|
reshi Temat założony przez niniejszego użytkownika |
» 2012-10-04 13:01:52 Kiedy ja rozumiem bardzo dobrze pętle ale ja chcę żeby wszystko były pokolej działania czyli jak jest 5+5*2=15 a jeżeli ma to wyglądać w ten sposób 5+5*2=20 to ja tak to umiem . Bo kiedyś próbowałem że np 5zmiena5 a zmienna jest równa + to i tak nie chce wynik się pokazać więc dlatego proszę o pomoc. |
|
f0g |
» 2012-10-04 14:11:56 Przecież kolega wyżej podał ładny link do Wikipedii http://pl.wikipedia.org/wiki/Odwrotna_notacja_polska :) |
|
DejaVu |
» 2012-10-04 17:05:26 Jeżeli kolejność działań ma być uwzględniania, a nie rozwiązywana od lewej do prawej to masz zdecydowanie za małą wiedzę na zrealizowanie tego. No i zastosowanie algorytmu o którym wspomnieli koledzy jest raczej nieuniknione. |
|
Nevea |
» 2012-10-04 18:53:03 Jak bardzo chcesz to zrobić to wystarczy poszukać tutoriali na youtube. Lecz nie wiem czy przepisując kod coś zrozumiesz... Jak już bardzo chcesz to podam Ci link'a http://www.youtube.com/watch?v=7Q9I3P58tNs&feature=plcp |
|
crash |
» 2012-10-10 12:21:01 Fajnie, że nie muszę zakładać nowego tematu :)
Jakiś czas temu "biedziłem się" z ONP i własnym parserem, później natrafiłem na link do youtube, właśnie tego wyżej. Wszystko ładnie pięknie, tylko jak teraz dodać funkcjonalność, żeby parser obsługiwał chociaż jedną zmienną, którą wprowadza użytkownik i to w dowolnym miejscu? Jakieś pomysły? |
|
« 1 » 2 |