Autor Beitrag
Ötzi
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 29.03.04 17:17 
Hallo,
ich will einen Taschenrechner programmieren bin mit allen Funktionen soweit fertich.Ich bräuchte nur noch die Punkt-vor-Strich rechnung und die Klammern kann mir da jemand helfen?!
Anfänger
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

WinXP
D3 Prof
BeitragVerfasst: Mo 29.03.04 17:52 
Wenn ich dir die Lösung gebe, ist das gleich ein kompletter rechner.

Da es meherere Lösungen gibt, empfehle ich deinen Quelltext mal zu geben, damit wir gucken können welche Lösung am besten passt.

Bei der Klammer könnte vieleicht dieser Befehl helfen:
ausblenden Delphi-Quelltext
1:
Zeichen:=Copy(Text, 121);					

Hier wird dem String "Zeichen" aus dem String (Text) die 12 Ziffer zugewiesen.
(Die 1 bedeutet 1 Zeichen).
mit einer Abfrag ob es ein "(" oder ")" sei ginge es dann weiter.
Mit einer Schleife könntest du ja den ganzen String durchkämmen.
Ötzi Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 29.03.04 19:50 
soll ich den Quelltext jemanden schicken??
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 29.03.04 19:54 
Nein. Du kannst ihn direkt hier hinein posten. Natürlich nur die relevanten Teile! :-)

Aber bitte die Delphi-Tags drum herum nicht vergessen!

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Ötzi Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 29.03.04 20:01 
Was sind die relevanten teile und was sind delphi tags?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 29.03.04 20:05 
Was die relevaten Teile sind, kann ich Dir nicht sagen. Das musst Du selbst wissen!

Mit Tags kannst Du Deine Texte hier im Forum formatieren. Wenn ich z.B. schreibe [b ]fett[/b ] und jeweils die Leerzeichen in den Klammern weglasse, sieht das so aus: fett.

Genauso geht es mit Delphi-Tags:
[delphi ]myString := 'Hallo';[/delphi ]

wird zu
ausblenden Delphi-Quelltext
1:
myString := 'Hallo';					


MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Ötzi Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 29.03.04 20:29 
Mist ich habe mein Quelltext aufm anderen Rechner liegen ich meld mich Mittwoch wieder
Ötzi Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mi 31.03.04 16:05 
So hier ist der QT meines Taschenrechners. Ich hoffe ihr önnt mir wegen den Klammern und der Punkt-vor-Strich Rechnung helfen.
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:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
unit Projekt;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    SpeedButton5: TSpeedButton;
    SpeedButton6: TSpeedButton;
    SpeedButton7: TSpeedButton;
    SpeedButton8: TSpeedButton;
    SpeedButton9: TSpeedButton;
    SpeedButton10: TSpeedButton;
    SpeedButton11: TSpeedButton;
    SpeedButton12: TSpeedButton;
    SpeedButton14: TSpeedButton;
    SpeedButton15: TSpeedButton;
    SpeedButton16: TSpeedButton;
    SpeedButton17: TSpeedButton;
    SpeedButton18: TSpeedButton;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    SpeedButton19: TSpeedButton;
    SpeedButton20: TSpeedButton;
    SpeedButton21: TSpeedButton;
    SpeedButton22: TSpeedButton;
    SpeedButton23: TSpeedButton;
    SpeedButton25: TSpeedButton;
    SpeedButton24: TSpeedButton;
    SpeedButton26: TSpeedButton;
    GroupBox4: TGroupBox;
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton13Click(Sender: TObject);
    procedure SpeedButton12Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure SpeedButton5Click(Sender: TObject);
    procedure SpeedButton6Click(Sender: TObject);
    procedure SpeedButton7Click(Sender: TObject);
    procedure SpeedButton8Click(Sender: TObject);
    procedure SpeedButton9Click(Sender: TObject);
    procedure SpeedButton17Click(Sender: TObject);
    procedure SpeedButton18Click(Sender: TObject);
    procedure SpeedButton11Click(Sender: TObject);
    procedure SpeedButton16Click(Sender: TObject);
    procedure SpeedButton14Click(Sender: TObject);
    procedure SpeedButton15Click(Sender: TObject);
    procedure SpeedButton10Click(Sender: TObject);
    procedure SpeedButton19Click(Sender: TObject);
    procedure SpeedButton20Click(Sender: TObject);
    procedure SpeedButton21Click(Sender: TObject);
    procedure SpeedButton22Click(Sender: TObject);
    procedure SpeedButton23Click(Sender: TObject);
    procedure SpeedButton24Click(Sender: TObject);
    procedure SpeedButton25Click(Sender: TObject);
    procedure SpeedButton26Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation
    var Zahl: String
        x,Zwischenergebnis: real;
        Rechnung: Integer;



{$R *.dfm}

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
Edit1.text := Edit1.Text + '7';
    Zahl := Edit1.Text;
       x := StrToFloat(Zahl);
end;

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


procedure TForm1.SpeedButton12Click(Sender: TObject);
begin
Edit1.text := Edit1.Text + '0';
    Zahl := Edit1.Text;
       x := StrToFloat(Zahl);
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
Edit1.text := Edit1.Text + '8';
    Zahl := Edit1.Text;
       x := StrToFloat(Zahl);
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
 Edit1.text := Edit1.Text + '9';
     Zahl := Edit1.Text;
       x := StrToFloat(Zahl);
end;

procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
Edit1.text := Edit1.Text + '4';
    Zahl := Edit1.Text;
       x := StrToFloat(Zahl);
end;

procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
Edit1.text := Edit1.Text + '5';
    Zahl := Edit1.Text;
       x := StrToFloat(Zahl);
end;

procedure TForm1.SpeedButton6Click(Sender: TObject);
begin
Edit1.text := Edit1.Text + '6';
    Zahl := Edit1.Text;
       x := StrToFloat(Zahl);
end;

procedure TForm1.SpeedButton7Click(Sender: TObject);
begin
Edit1.text := Edit1.Text + '1';
    Zahl := Edit1.Text;
       x := StrToFloat(Zahl);

end;

procedure TForm1.SpeedButton8Click(Sender: TObject);
begin
Edit1.text := Edit1.Text + '2';
    Zahl := Edit1.Text;
       x := StrToFloat(Zahl);
end;

procedure TForm1.SpeedButton9Click(Sender: TObject);
begin
Edit1.text := Edit1.Text + '3';
    Zahl := Edit1.Text;
       x := StrToFloat(Zahl);
end;


procedure TForm1.SpeedButton17Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'+';
 if Rechnung = 0 then Zwischenergebnis := x;
     If Rechnung = 1 then Zwischenergebnis := Zwischenergebnis + x;
     If Rechnung = 2 Then Zwischenergebnis := Zwischenergebnis - x;
     If Rechnung = 3 Then Zwischenergebnis := Zwischenergebnis * x;
     If Rechnung = 4 Then
         begin 
            if x <> 0 
            then Zwischenergebnis := Zwischenergebnis / x 
            else ShowMessage('Eine Division durch Null ist nicht möglich!');
         end
     Edit1.Text := ''
     x := 0
     Rechnung := 1;

end;

procedure TForm1.SpeedButton18Click(Sender: TObject);
begin
edit1.Text:='';
edit3.text:='';
end;

procedure TForm1.SpeedButton11Click(Sender: TObject);
begin
Edit1.Text := Edit1.Text + DecimalSeparator;
end;

procedure TForm1.SpeedButton16Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'-';
 if Rechnung = 0 then Zwischenergebnis := x;
     If Rechnung = 1 then Zwischenergebnis := Zwischenergebnis + x;
     If Rechnung = 2 Then Zwischenergebnis := Zwischenergebnis - x;
     If Rechnung = 3 Then Zwischenergebnis := Zwischenergebnis * x;
     If Rechnung = 4 Then
         begin 
            if x <> 0 
            then Zwischenergebnis := Zwischenergebnis / x
            else ShowMessage('Eine Division durch Null ist nicht möglich!');
         end;
     Edit1.Text := ''
     x := 0;
     Rechnung := 2;

end;

procedure TForm1.SpeedButton14Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'*';
if Rechnung = 0 then Zwischenergebnis := x;
     If Rechnung = 1 then Zwischenergebnis := Zwischenergebnis + x;
     If Rechnung = 2 Then Zwischenergebnis := Zwischenergebnis - x;
     If Rechnung = 3 Then Zwischenergebnis := Zwischenergebnis * x;
     If Rechnung = 4 Then
         begin 
            if x <> 0 
            then Zwischenergebnis := Zwischenergebnis / x 
            else ShowMessage('Eine Division durch Null ist nicht möglich!');
         end;
     Edit1.Text := '';     
     x := 0;
     Rechnung := 3;

end;

procedure TForm1.SpeedButton15Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'/';
if Rechnung = 0 then Zwischenergebnis := x;
     If Rechnung = 1 then Zwischenergebnis := Zwischenergebnis + x;
     If Rechnung = 2 Then Zwischenergebnis := Zwischenergebnis - x;
     If Rechnung = 3 Then Zwischenergebnis := Zwischenergebnis * x;
     If Rechnung = 4 Then
         begin 
            if x <> 0 
            then Zwischenergebnis := Zwischenergebnis / x 
            else ShowMessage('Eine Division durch Null ist nicht möglich!');
         end;
      Edit1.Text := ''
     x := 0;
     Rechnung := 4;


end;

procedure TForm1.SpeedButton10Click(Sender: TObject);
begin
if Rechnung = 0 then Zwischenergebnis := x;
     If Rechnung = 1 then Zwischenergebnis := Zwischenergebnis + x;
     If Rechnung = 2 Then Zwischenergebnis := Zwischenergebnis - x;
     If Rechnung = 3 Then Zwischenergebnis := Zwischenergebnis * x;
     If Rechnung = 4 Then
         begin 
            if x <> 0 
            then Zwischenergebnis := Zwischenergebnis / x 
            else ShowMessage('Eine Division durch Null ist nicht möglich!');
         end;
     Rechnung := 0;
     x := Zwischenergebnis; 
     Edit3.Text := FloatToStr(Zwischenergebnis); 
end;

procedure TForm1.SpeedButton19Click(Sender: TObject);
begin
x:=StrToFloat(Edit1.Text);
x:= x*x;
Edit3.Text:=FloatToStr(x);
Edit1.Text:=Edit3.Text;
end;

procedure TForm1.SpeedButton20Click(Sender: TObject);
begin
x:=StrToFloat(Edit1.Text);
x:=sqrt(x);
Edit3.Text:=FloatToStr(x);
Edit1.Text:=Edit3.Text;
end;

procedure TForm1.SpeedButton21Click(Sender: TObject);
begin
x:=StrToFloat(Edit1.Text);
x:=1/x;
Edit3.Text:=FloatToStr(x);
Edit1.Text:=Edit3.Text;
end;

procedure TForm1.SpeedButton22Click(Sender: TObject);
begin
x:=StrToFloat(Edit1.Text);
x:=-x;
Edit3.Text:=FloatToStr(x);
Edit1.Text:=Edit3.Text;
end;

procedure TForm1.SpeedButton23Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text + '3,141592654';
Zahl := Edit1.Text;
x := StrToFloat(Zahl);
end;

procedure TForm1.SpeedButton24Click(Sender: TObject);
begin
x:=StrToFloat(Edit1.Text);
x:=x*pi/180;
x:=cos(x);
Edit3.Text:=FloatToStr(x);
Edit1.Text:=Edit3.Text;
end;

procedure TForm1.SpeedButton25Click(Sender: TObject);
begin
x:=StrToFloat(Edit1.Text);
x:=x*pi/180;
x:=sin(x);
Edit3.Text:=FloatToStr(x);
Edit1.Text:=Edit3.Text;
end;


procedure TForm1.SpeedButton26Click(Sender: TObject);
begin
x:=StrToFloat(Edit1.Text);
x:=x*pi/180;
x:=sin(x)/cos(x);
Edit3.Text:=FloatToStr(x);
Edit1.Text:=Edit3.Text;
end;

end.


Moderiert von user profile iconPeter Lustig: Quote- durch Delphi-Tags ersetzt
Ötzi Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Do 01.04.04 16:15 
Zudem möchte ich noch eine y hoch X funktion einbauen wie geht das?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 01.04.04 18:53 
Ich verstehe noch nicht so ganz, wie der Rechner aufgebaut ist. Könntest Du mal ein paar Kommentare in den Quelltext schreiben? (Bitte, indem Du Dein Posting editierst.)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Ötzi Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Fr 02.04.04 15:21 
Ich poste mal ein Bild meines Prgramms velleicht verstehst dus dann:

user defined image

Die Zeile Rechnung ist Edit1.Text
und die Zeile Rechnung ist Edit3.Text

Wenn ihr noch fragen zum QT hab oder mir mit diesem Programm irgendwie helfen könnt(wollt) dann könnt ihr mich ja per ICQ mal anlabern
148277868
NetZwerg
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 448

Slackware 10.1
Kylix 3, D5 Standard
BeitragVerfasst: Fr 02.04.04 15:51 
For-Schleife!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  Temp: Integer;
  X, Y: Integer;
  Counter: Integer;
begin
  Temp := x;
  for counter := 1 to y
    do x := x * temp;
end;


cya, dave :twisted:

_________________
"Manche Leute drücken nur deshalb ein Auge zu, damit sie besser zielen können."
Billy Wilder, amer. Filmregisseur
Ötzi Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 13.04.04 11:29 
kann mir da wirklich niemand helfen???
Wenigstens die Punkt vor Strichrechnung?
GlowWorm
Hält's aus hier
Beiträge: 9

Win 98 SE
D7 Entp
BeitragVerfasst: Mi 14.04.04 10:22 
Ötzi hat folgendes geschrieben:
Zudem möchte ich noch eine y hoch X funktion einbauen wie geht das?

Ganz einfach:
x=a^b
wird zu:
ausblenden Delphi-Quelltext
1:
x:=power(a,b);					

Wenn a oder b real sind, ist x auch real, wenn beide integer sind, ist x auch integer. Aber pass auf, die power-Funktion neigt zu unschönen Fehlermeldungen, wenn du schlechtes input nicht abfängst. Hier ein paar Sachen, die er nicht mag, und wie du es blocken kannst:

x sprengt high(integer):
überprüfe ob der Logarithmus zur Basis 2 von a multipliziert mit b kleiner gleich als 31 ist.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
if (ln(a)/ln(2))*b>31 then begin
showmessage("Überlauf");
exit;
end;


a ist negativ und b real:
selbsterklärend. Es gibt AFAIR keinen Zahlentyp für imaginäre und komplexe Zahlen.

_________________
Dies ist ein Text, der an jeden Beitrag von Dir angehängt werden kann. Es besteht eine Limit von 255 Buchstaben.
Inferno
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76



BeitragVerfasst: Mi 14.04.04 14:34 
Das Zauberwort heißt "Kellerautomat" *g*

das is ein algorythmus mit dem man so komplizierte Rechnungen wunderbar auflösen und ausrechnen kann.

z.B. 3 * 93 / (2 + 4) - (2 * (34 - 5 / (8 + 2)))

*ggg*

mfg
Inferno