[VC++]Kalkulator - tworzenie formuł


(Kajotek1) #1

Witam,

mam zrobiony kalkulator w Visual C++, który liczy formuły dla dwóch zmiennych. dodawanie, odejmowanie, sinus, cosinus itp itd. Wszystko działa fajnie i dobrze, tylko nie mam kompletnie pomysłu jak przerobić dalej kod, aby kalkulator mógł wykonywać "skomplikowane" działania, np.: (2+2)*2 itd. Prosiłbym o jakieś wskazówki, nie chcę gotowca, gdyż sam chcę się pomęczyć,ale takie żeby były wytłumaczone trochę łopatologicznie. 

 

 

Ciekawi mnie jeszcze w jaki sposób mogę dodać nawiasy? To jest raczej powiązane właśnie z tymi formułami i zastosowaniem ONP, ale mogę się mylić.

 

Z góry dzięki za pomoc i pozdrawiam,

Kuba


(Rolek0) #2

http://web.archive.org/web/20120107065000/http://warsztat.gd/tutorials.php?x=category&id=32

http://informatyka.wroc.pl/node/391 http://informatyka.wroc.pl/node/431


(Kajotek1) #3

Dzięki wielkie za pomoc :slight_smile: Wszystko się wyjaśniło :slight_smile:

Dodane

Problem z kalkulatorem powrócił, większość prawie już zrobiona, zostały drobne poprawki i… po próbie kompilacji wyrzuca mi błąd : 

1>c:\users\kuba\documents\visual studio 2010\projects\kalkulatorr\kalkulatorr\Form1.h(1092): error C2664: ‘Calc::RPN’ : cannot convert parameter 1 from ‘System::String ^’ to ‘std::string’

1>          No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

Próbowałem zmieniać deklaracje na String, żeby cały czas był systemowy string, który tkwi w textBoxach w Visual C++, próbowałem konwertować poprzez coś co zwane jest marshal, ale tego nie rozumiem za bardzo i nie udało się. Od dwóch dni tkwię w tym skonwertowaniu. Prosiłbym o jakąś pomoc, poniżej wrzucam kody(wiem, że jest chaos, niestety, ale większość robiona na kopiuj wklej z poprzednika i nie była jeszcze poprawiana, żeby ładnie to wszystko wyglądało).

Przyciski(Form1.h):

http://ideone.com/7NBIxN

Nagłówek głównej formy(Form1.h):

http://ideone.com/R1xZJx

Zamiana do RPN(Calc.cpp):

http://ideone.com/M1nRzQ

Calc.h:

http://ideone.com/rTRLFB

Stosy(Stos.cpp):

http://ideone.com/AJjaqq

Stos.h:

http://ideone.com/xcAhT5

Kalkulator.cpp:

http://ideone.com/JxbLIw

Sam za bardzo się chyba w tym pogubiłem i już nie mam sił do tego. Za bardzo namieszałem :frowning:

Pozdrawiam


(Rolek0) #4

C++/CLI to taki potworek, który służy bardziej do pisania wrapperów między kodem natywnym a zarządzanym, niż do tworzenia samodzielnych aplikacji. Najlepiej jakbyś się zdecydował albo na C# albo na C++.

Sądzę, że to http://msdn.microsoft.com/en-us/library/1b4az623.aspx powinno pomóc.


(Kajotek1) #5

 Próbowałem to zrobić, dodając:

System::String^ clrString = (textBox3->Text);
std::string stdString = marshal_as<std::string>(clrString); //String^ to std
//System::String^ myString = marshal_as<System::String^>(MyBasicStirng); //std to String^
//prueba.CopyInfo(stdString); //MyMethod
textBox3->Text=Wynik.RPN(textBox3->Text); 

oraz wszelkie biblioteki i nadal ten sam bład…