Autor |
Beitrag |
Ötzi
Hält's aus hier
Beiträge: 8
|
Verfasst: 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
      
Beiträge: 128
WinXP
D3 Prof
|
Verfasst: 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:
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 
Hält's aus hier
Beiträge: 8
|
Verfasst: Mo 29.03.04 19:50
soll ich den Quelltext jemanden schicken??
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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 
Hält's aus hier
Beiträge: 8
|
Verfasst: Mo 29.03.04 20:01
Was sind die relevanten teile und was sind delphi tags?
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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
Delphi-Quelltext
MfG
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Ötzi 
Hält's aus hier
Beiträge: 8
|
Verfasst: Mo 29.03.04 20:29
Mist ich habe mein Quelltext aufm anderen Rechner liegen ich meld mich Mittwoch wieder
|
|
Ötzi 
Hält's aus hier
Beiträge: 8
|
Verfasst: 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.
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 
Hält's aus hier
Beiträge: 8
|
Verfasst: Do 01.04.04 16:15
Zudem möchte ich noch eine y hoch X funktion einbauen wie geht das?
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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 
Hält's aus hier
Beiträge: 8
|
Verfasst: 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
      
Beiträge: 448
Slackware 10.1
Kylix 3, D5 Standard
|
Verfasst: 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 
_________________ "Manche Leute drücken nur deshalb ein Auge zu, damit sie besser zielen können."
Billy Wilder, amer. Filmregisseur
|
|
Ötzi 
Hält's aus hier
Beiträge: 8
|
Verfasst: 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
|
Verfasst: 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:
Delphi-Quelltext
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.
_________________ Dies ist ein Text, der an jeden Beitrag von Dir angehängt werden kann. Es besteht eine Limit von 255 Buchstaben.
|
|
Inferno
      
Beiträge: 76
|
Verfasst: 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
|
|