Autor Beitrag
theBaby
Hält's aus hier
Beiträge: 1

Windows XP Prof.
Delphi5
BeitragVerfasst: So 20.11.05 14:56 
Ich brauch mal eure Hilfe.

Arbeite in Info mit Delphi und es wurde uns zur Aufgabe gestellt, dass wir einen Taschenrechner erstellen sollen.
Ich werde euch mal die bisherige Unit reinkopieren, damit ihr ungefähr wisst, wie weit wir gekommen sind und wie das Ganze aussieht.
Es gibt 2 Editfelder, somit eine Variable a und eine b...

Mein Problem ist, dass ich nicht weiß, wie ich die Unit schreiben soll um

1.Wurzel (a)
2.log (a)
3.ln (a)
4.a^2
5.b^2
6.a^b
7.1/a
8.a!
9.MOD
10.DIV

zu erhalten/berechnen.

Hier die Unit:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    ein_zahl1: TEdit;
    ein_zahl2: TEdit;
    Multiplikation: TButton;
    Division: TButton;
    Addition: TButton;
    Subtraktion: TButton;
    ausgabe: TLabel;
    loeschen: TButton;
    ende: TButton;
    procedure endeClick(Sender: TObject);
    procedure AdditionClick(Sender: TObject);
    procedure SubtraktionClick(Sender: TObject);
    procedure MultiplikationClick(Sender: TObject);
    procedure DivisionClick(Sender: TObject);
    procedure loeschenClick(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.endeClick(Sender: TObject);
begin
close;
end;

procedure TForm1.AdditionClick(Sender: TObject);
var zahl1, zahl2, erg:integer;
begin
zahl1:=strtoint (ein_zahl1.text);
zahl2:=strtoint (ein_zahl2.text);
erg:=zahl1+zahl2;
ausgabe.caption:=inttostr (erg)
end;

procedure TForm1.SubtraktionClick(Sender: TObject);
var zahl1, zahl2, erg:integer;
begin
zahl1:=strtoint (ein_zahl1.text);
zahl2:=strtoint (ein_zahl2.text);
erg:=zahl1-zahl2;
ausgabe.caption:=inttostr (erg);
end;

procedure TForm1.MultiplikationClick(Sender: TObject);
var zahl1, zahl2, erg:integer;
begin
zahl1:=strtoint (ein_zahl1.text);
zahl2:=strtoint (ein_zahl2.text);
erg:=zahl1*zahl2;
ausgabe.caption:=inttostr (erg)
end;

procedure TForm1.DivisionClick(Sender: TObject);
var zahl1, zahl2, erg:real;
begin
zahl1:=strtofloat (ein_zahl1.text);
zahl2:=strtofloat (ein_zahl2.text);
erg:=zahl1/zahl2;
ausgabe.caption:=floattostrF (erg, fffixed,10,2);
end;

procedure TForm1.loeschenClick(Sender: TObject);
begin
ein_zahl1.text:='';
ein_zahl2.text:='';
ausgabe.caption:='';
end;

end.


Wäre klasse, wenn ihr versuchen könntet mir die Unit komplett zu machen bzw. mir bitte nicht nur die Funktionen (also sqrt,...) schreiben würdet...

Vielen Dank im vorraus...

Moderiert von user profile iconraziel: B- durch Delphi-Tags ersetzt
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: So 20.11.05 15:06 
Die Funktionen findest du in der Unit Math. Der Rest mit dem Umwandeln der Dezimalzahlen in Strings und umgekehrt läuft analog wie in deinem Code bereits implementiert.
Einfach mal durch die Delphihilfe schauen: Sqrt, mod, div, ...

AXMD
Allesquarks
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 510

Win XP Prof
Delphi 7 E
BeitragVerfasst: So 20.11.05 15:07 
Entweder du bindest die Unit math ein da stehen die ganzen Sachen drin (mod und div gibts direkt als Delphi Befehl) oder du schreibst dir ne Funktion in der du die entsprechenden Funktionen (sin, cos, ln usw.) in ne Taylorreihe entwickelst, oder eine andere proprietäre Reihe, die du dann nach x-Schritten, wenn es dir genau genug ist abbrichst.

Vorsicht: nicht alle der Reihen die man üblicherweise findet haben nativ einen Konvergenzradius der genauso groß ist wie der Definitionsbereich.
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: So 20.11.05 15:11 
user profile iconAllesquarks hat folgendes geschrieben:
Eoder du schreibst dir ne Funktion in der du die entsprechenden Funktionen (sin, cos, ln usw.) in ne Taylorreihe entwickelst

Mc Laurin wäre hier besser geeignet - einfachere Formeln ;)
user profile iconAllesquarks hat folgendes geschrieben:
Vorsicht: nicht alle der Reihen die man üblicherweise findet haben nativ einen Konvergenzradius der genauso groß ist wie der Definitionsbereich.

Absolut korrekt. Wenn man das nicht beachtet kann viel Blödsinn rauskommen ;)

AXMD
iX0r
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 34

Ubuntu
D6, Lazarus
BeitragVerfasst: Do 24.11.05 09:01 
Wer einen Taschenrechner programmieren soll, der wird wohl kaum Hochschulmathematik betreiben. Aber gut ihr habt gezeigt, dass ihr was wißt. Mal ganz davon abgesehen, dass sich der sinus immer noch am besten mit der richardson extrapolation bestimmen läßt, wie meinte unser prof. "der andere mist ist für die ingenieure.." :P

Nun zu dir, lieber Taschenrechner. Was wir nicht tun werden, ist dir deine unit auszuprogrammieren. Das hat zwei Gründe:
- es ist uns zu einfach
- du lernst genau genommen gar nix dabei (der ist eigentlich wichtiger)
Was ich dur empfehle:
- binde die "math" unit ein
ausblenden Delphi-Quelltext
1:
uses ...,math...;					

Dann stehen dir alle wichtigen mathematischen Funktonen zur Verfügung. Wenn du dann mit einer der Funktione Probleme hast, oder ein Beispiel benötigst, dann helfen dir hier alle sicherlich gerne weiter.