dutagamo utworzono 15 stycznia 2009 utworzono 15 stycznia 2009 Witam do napisania mam kalkulator naukowy taki jak w MS Windows i mam pytań kilka: 1) jak program może liczyć funkcje trygonometryczne?? wiem że Cos, Sin, itd. to są funkcje zwracające wartość danego kąta ale jak to napisać by on to czytał po kliknięciu guzika z cyfrą a potem liczył po wciśnięciu funkcji Cos?? 2) jak napisać by po kliknięciu guzika pojawiła się dokładna wartość liczby Pi?? 3) jak wykorzystać tablice dynamiczne by stworzyć okno statystyczne?? 4) mam jak się domyślam błąd w kodzie... mógłby ktoś to sprawdzić co jest nie tak i to poprawić?? unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;type TForm1 = class(TForm) SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; SpeedButton3: TSpeedButton; SpeedButton4: TSpeedButton; SpeedButton5: TSpeedButton; SpeedButton6: TSpeedButton; SpeedButton7: TSpeedButton; SpeedButton8: TSpeedButton; SpeedButton9: TSpeedButton; SpeedButton10: TSpeedButton; SpeedButton11: TSpeedButton; SpeedButton12: TSpeedButton; SpeedButton13: TSpeedButton; SpeedButton14: TSpeedButton; SpeedButton15: TSpeedButton; SpeedButton16: TSpeedButton; Edit1: TEdit; SpeedButton17: TSpeedButton; procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton13Click(Sender: TObject); procedure SpeedButton17Click(Sender: TObject); procedure SpeedButton12Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1; dz:string; pom:double;implementation{$R *.dfm}procedure TForm1.SpeedButton1Click(Sender: TObject);begin Edit1.Text:=Edit1.Text+(Sender as TSpeedButton).Caption;end;procedure TForm1.SpeedButton13Click(Sender: TObject);begin dz:=(Sender as TSpeedButton).Caption; pom:=StrToFloat(Edit1.Text); Edit1.Text:='';end;procedure TForm1.SpeedButton17Click(Sender: TObject);begin pom:=0; dz:=''; Edit1.Text:='';end;procedure TForm1.SpeedButton12Click(Sender: TObject);begin if dz='+' then pom:=pom+StrToFloat(Edit1.Text) else if dz='-' then pom:=pom-StrToFloat(Edit1.Text) else if dz='*' then pom:=pom*StrToFloat(Edit1.Text) else if dz='/' then begin try pom:=pom/StrToFloat(Edit1.Text); except ShowMessage('Blad dzielenia przez zero!'); pom:=-99999999; end; end; Edit1.Text:=FloatToStr(pom);end;end. i mam do tego pytanie: dlaczego debuguje mi program jak wcisnę buttona z + lub - ??
benkowik komentarz 15 stycznia 2009 komentarz 15 stycznia 2009 Co do różnych funkcji zobacz tutaj: http://download.4programmers.net/Parser+ka.../Kalkulator.dpr Co z tym Pi to chyba o to Ci chodziło: edit1.Text := FloatToStr(22/7); Ja bym zrobił zapisywanie liczb do zmiennych: zmienna1, zmienna2: double; Teraz bym przy naciskaniu klawisza dodaj/odejmij/pomnóż/podziel to: pobranie do zmiennej1 wartość z pola, wyczyszczenie pola, Następnie przy klawisz równa się to zależy czy dodać..czy podzielić to pobranie do drugiej zmiennej, działanie teraz na dwóch zmiennych i wynik w polu. Jeśli druga liczba przy dzieleniu jest równa 0 to trzeba zrobić porównanie if zmienna2 >= 1 then Teraz zrobiłbym jak rozpoznawać czy dzielnie czy dodawanie, odejmowanie, mnożenie: varrodzaj:String[1];// dodawanierodzaj:='d';// mnożenierodzaj:='m';// dzielnierodzaj:='d';// odejmowanierodzaj:='o';if rodzaj='o' then// odejmowanie itp. Tutaj masz jak ja mam zrobione dodawanie i dla przykładu odejmowanie: Znak:='+'; if not (Edit1.Text = '') or (Edit1.Text = #44) then begin Liczba1:=StrToFloat(Edit1.Text); Edit1.Clear;end;Znak:='-'; if not (Edit1.Text = '') or (Edit1.Text = #44) then begin Liczba1:=StrToFloat(Edit1.Text); Edit1.Clear;end;
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.