Entwickler-Ecke
Sonstiges (Delphi) - Taschenrechner programmieren
Ötzi - Mo 29.03.04 17:17
Titel: Taschenrechner programmieren
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 - Mo 29.03.04 17:52
Titel: Re: Taschenrechner programmieren
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:
Delphi-Quelltext
1:
| Zeichen:=Copy(Text, 12, 1); |
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 - Mo 29.03.04 19:50
soll ich den Quelltext jemanden schicken??
Christian S. - 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!
Ötzi - Mo 29.03.04 20:01
Was sind die relevanten teile und was sind delphi tags?
Christian S. - 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
MfG
Peter
Ötzi - Mo 29.03.04 20:29
Mist ich habe mein Quelltext aufm anderen Rechner liegen ich meld mich Mittwoch wieder
Ötzi - 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.
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 public 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
Peter Lustig: Quote- durch Delphi-Tags ersetzt
Ötzi - Do 01.04.04 16:15
Zudem möchte ich noch eine y hoch X funktion einbauen wie geht das?
Christian S. - 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.)
Ötzi - Fr 02.04.04 15:21
Ich poste mal ein Bild meines Prgramms velleicht verstehst dus dann:
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 - Fr 02.04.04 15:51
For-Schleife!
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:
Ötzi - Di 13.04.04 11:29
kann mir da wirklich niemand helfen???
Wenigstens die Punkt vor Strichrechnung?
GlowWorm - 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:
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.
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.
Inferno - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!