x-kom hosting

[delphi] kalkulator naukowy

dutagamo
utworzono
utworzono

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
komentarz

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.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.