/*Wersja programu: 2006-12m-31d; Autor: Artur Czekalski ARTUR@epokaY.net www.epokaY.net/artur/ Przykład użycia klasy ObliczanieWyrazenia z biblioteki satorparserv.dll (w wer.2006-12m-31d) w aplikacji konsolowej. */ //--------------------------------------------------------------------------- #include //printf #include "satorparserv_use.h" //deklaracja klasy ObliczanieWyrazenia; Do projektu należy dodać plik: satorparserv.lib ! //--------------------------------------------------------------------------- void main(void) { typliczb gX = 10.0, gY = 3.0; //globalne rzeczywiste zmienne const typliczb *Adresyzmiennych[2] = {&gX, &gY}; //ta tablica nie może być niszczona przy obliczaniu wartości! const char *Nazwyzmiennych[2] = {"x","y"}; //nazwy zmiennych, których można uzywać w wyrażeniu //---Utworzenie obiektu; sposób nr1 - utworzenie obiektu i od razu parsowanie ObliczanieWyrazenia Wyr(2,Nazwyzmiennych,Adresyzmiennych, "x/y-3,0+1.0" ,true); //czy optymalizować wyrażenie przy parsowaniu: obliczanie stałych wyrażeń; używamy false gdy brak zmiennych //ObliczanieWyrazenia Wyr; Wyr.Parsuj(2,Nazwyzmiennych,Adresyzmiennych,"x/y-3,0+1.0",true); //sposób nr2 //ObliczanieWyrazenia Wyr(0,0,0,"1+sqrt(9)",false); //gdy nie używamy zmiennych (tu sposób nr1) printf("Wyrazenie: %s\n", Wyr.LWyrazenie); printf("Liczba atomow od lewej w poprawnej gramatycznie czesci wyrazenia: %d\n", Wyr.DlGram); if (Wyr.OpisBledu) //sprawdzamy czy jest błąd w samym ZAPISIE wyrażenia; lub przy obliczaniu stałych wyrażeń, np. x+2/0 {printf("Wyrazenie jest niepoprawne: %s\n", Wyr.OpisBledu); //opis if (Wyr.GSB) printf("Blad zaczyna sie od: %s\n", Wyr.GSB); //Gdzie Syntaktyzny Błąd wystąpił getchar(); return; } //Wyrażenie jest poprawne, więc możemy je obliczać //----------Obliczenie wartości - pojedyńczo----------- printf("\n########12345678901234567890\n"); printf( "Wartosc=%.20f\n", Wyr.WartoscWyrazenia()); if (Wyr.OpisBledu) //sprawdzamy czy był błąd w OBLICZANIU wyr. (np. dzielenie przez zero) printf("%s\n", Wyr.OpisBledu); printf("\nKONIEC!"); getchar(); }