![]() |
Taschenrechner!!??
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen ich soll den im Anhang programmierten Taschenrechner nachbauen! Ich habe aber absolut keinen Peil wo und wie ich Anfangen soll.Könntet ihr mir bitte helfen
Danke schonmal im voraus Gruß Crank09 |
Re: Taschenrechner!!??
Gegenfrage,
wieviel ahnung hast du von delphi ? |
Re: Taschenrechner!!??
Hi,
was hast du denn schon? wo ist das Problem? |
Re: Taschenrechner!!??
Ich bin Schüler in der 9ten Klasse habe mit Delphi vor ca 1ner Woche angefangen mit anderen Worten ich habe GAR KEINE Ahnung(aber ich hätte gern welche) nur dabei brauch ich hilfe
Das Problem ist konkret gesagt das Programm an sich unser Lehrer meinte wir sollen mal versuchen das so zu schreiben :wall: aber ich weiß nicht wo ich anfangen soll und wie ich das schreiben soll |
Re: Taschenrechner!!??
Achja ich arbeite mit Delphi 3 Professional und habe bis jetzt nur die Oberfläche
|
Re: Taschenrechner!!??
OK also ich würd erst ma eine VCL Formularanwendung für Win 32 starten.
Dann setzt du erst mal die Buttons (Knöpfe) so wie sie da stehen und setzt oben ein Label hin. So der Taschenrechner kann ja nur eine rechnung ausführen und mur mit einer Zahl. Also brauchst du nur 4 Varriablen Zahl1, Zahl2 die müssen vom typ integer sein (Ganzzahlen) Operator ( der ist für das *-+/) vom Typ char ( char steht für charakter und bedeutet, dass die Varriable nur eine Stelle haben kann) Und zu guter Letzt brauchst du noch das Ergebnis vom Typ real ( das ist der Typ mit dem du mit Kommazahlen arbeiten kannst) So jetzt musst du deinem Programm nur noch sagen, das es am anfang, wenn du auf ne Zahl klickst, die Varriable den wert der Zahl, auf die du geklickt hast, annehmen soll. Danach musst du deinem Programm sagen, dass du, wenn du auf einen Operator klickst er diesen Operator in die Varriable Operator speichert. und dann brauchst du noch Zahl 2 (hier darfst du nicht vergessen, dass der Computer erst die Zahl 2 annehmen darf wenn schon ein Operator ausgewählt wurde (Am besten mit einer IF Zweig) Dann musst du nur noch den Gleichbutton Programieren. Der sieht dann so aus, dass wenn du den operator + ausgewählt hast dann soll er Zahl1 + Zahl2 rechnen und wenn er den operator - ausgewählt hat dann soll der Zahl1 - Zahl2 machen ... Und das Ergebnis soll er dann in das Label reinschreiben Soweit zur vorgehensweise Ich joffe du hast verstanden was ich meine Den Code für sowas hab ich jetzt aus lernzwecken hier nicht gepostet (würde dir ja den Spass verderben) Wenn du noch Fragen hast einfach posten Gruß Axxus |
Re: Taschenrechner!!??
Danke hast du dir den Rechner mal angeschaut?
So einen Rechner hab ich auch schon programmiert (sogar mit Prozent und wurzeln) Ich meine so einen Rechner wie ein taschenrechner aufgebaut also das du eine Zahl eingibtst und das wird dann in einem Label angegeben und die Operator werden dann durch Bottons angegeben und da weiß ich beim besten willen nicht, wie ich das einstellen soll das alle botoms das oben angeben dann auch noch mit Operator und so ???!!! Aber herzlichen Dank für deine Mühe Gruß Crank09 |
Re: Taschenrechner!!??
Hi,
um es einfach zu halten: du brauchst eine Variable für den Operanten, eine Variable für das Ergebnis und eine Variable für die aktuelle Funktion. (1) Mit jeder Funktionstaste wird dann das Ergebnis (i.d. Zahl in der Anzeige) nach ZAHL übernommen und die Funktion gemerkt. (2) Mit der nächsten Funktionstaste muss dann zuerst das Ergebnis berechnet ( ERG = f(ZAHL, ERG) ) und angezeigt werden. Dann wird bei (1) weitergemacht. |
Re: Taschenrechner!!??
Ehm irgenwie widersprichst du dir :gruebel:
erst sagst du Zitat:
Zitat:
Als Code würde ich dir nun folgendes vorschlagen (Is vll besser wenn du en anschauliches beispiel hast)
Delphi-Quellcode:
Erklärungen kommen morgen bin jetzt zu müde dazu
unit Taschenrechner;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) Button_1: TButton; procedure Button_1Click(Sender: TObject); procedure Button_plusClick(Sender: TObject); procedure Button_gleichClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; Zahl1, Zahl2, Zahlnr : integer; Operator1: Char; Ergebnis: real; KOntrolle_1, KOntrolle_2, KOntrolle_O: Boolean; implementation {$R *.dfm} procedure TForm1.Button_1Click(Sender: TObject); begin If Zahlnr = 1 Then begin Zahl1 := '1'; Kontrolle_1 := true; Label1.Caption := (inttostr(Zahl1)); end else begin Zahl2 := '1'; KOntrolle_2 := true; Label1.Caption := (inttostr(Zahl2)); end; end; procedure TForm1.Button_plusClick(Sender: TObject); begin Operator1 := '+'; Zahlnr := 2; Kontrolle_O := true; end; procedure TForm1.Button_gleichClick(Sender: TObject); begin If (Kontrolle_1 = true) and (Kontrolle_2 = true) and (Kontrolle_O = true) Then begin If Operator1 = + Then begin Ergebnis := Zahl1 + Zahl2; end . . . Zahl1 := ''; Zahl2 := ''; Operator1 := ''; Label1.Caption := (Floattostr (Ergebnis)); end; end; end. Sollte ich ein paar Syntaxfehler gemacht haben bitte korrigieren bin mom ziemlich müde und hab den code nicht getestet. @ Crank09 Wenn du dich für Informatik und für Delphi interessiert und mehr lernen möchtest als im Schulunterricht würde ich als Nachtrlektüre 1. Turbo Pascal & Delphi für kids von Hans-Georg Schumann (Verlag mitp) (isbn 3-8266-0642-6) 2. Delphi für kids von Hans-Georg Schumann (Verlag mitp) (isbn 3-8266-0643-4) empfehlen Die Bücher sind echt gut und erschwinglich und haben mir sehr geholfen als ich angefangen hab Hoffe es hilft die und morgen kommt noch ne erklärung zu dem code Axxus |
Re: Taschenrechner!!??
ICH MEINTE SO EINEN rECHNER WIE DU IHN MIR ZUERST BESCHRIEBEN HAST.
Danke das du dir die mühe gemacht hast |
Re: Taschenrechner!!??
So hat mein Lehrer das programmiert :wiejetzt:
Delphi-Quellcode:
aber danke
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Button10: TButton; Button11: TButton; Button12: TButton; Button13: TButton; Button14: TButton; Button15: TButton; Button16: TButton; Button17: TButton; Button18: TButton; Label1: TLabel; Button19: TButton; procedure Button1Click(Sender: TObject); procedure Label1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button10Click(Sender: TObject); procedure Button13Click(Sender: TObject); procedure Button14Click(Sender: TObject); procedure Button15Click(Sender: TObject); procedure Button16Click(Sender: TObject); procedure Button18Click(Sender: TObject); procedure Button11Click(Sender: TObject); procedure Button19Click(Sender: TObject); procedure Button12Click(Sender: TObject); procedure Button17Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; zahl, ergebnis, f, w : real; operator : Char; komma : boolean; i : integer; implementation {$R *.DFM} procedure TForm1.Label1Click(Sender: TObject); begin zahl := 0; ergebnis := 0; f := 10; operator := '+'; label1.Caption := floattostr ( zahl); label1.color := clgray; label1.alignment := taRightJustify; komma := false; end; procedure TForm1.Button1Click(Sender: TObject); begin if komma = false then begin zahl := zahl * f + 1; end else begin zahl := zahl + 1 / f; f := f * 10; end; label1.caption := floattostrf ( zahl, ffnumber,7,4); end; procedure TForm1.Button2Click(Sender: TObject); begin if komma = false then begin zahl := zahl * f + 2; end else begin zahl := zahl + 2 / f; f := f * 10; end; label1.caption := floattostrf ( zahl, ffnumber,7,4); end; procedure TForm1.Button3Click(Sender: TObject); begin if komma = false then begin zahl := zahl * f + 3; end else begin zahl := zahl + 3 / f; f := f * 10; end; label1.caption := floattostrf ( zahl, ffnumber,7,4); end; procedure TForm1.Button4Click(Sender: TObject); begin if komma = false then begin zahl := zahl * f + 4; end else begin zahl := zahl + 4 / f; f := f * 10; end; label1.caption := floattostrf ( zahl, ffnumber,7,4); end; procedure TForm1.Button5Click(Sender: TObject); begin if komma = false then begin zahl := zahl * f + 5; end else begin zahl := zahl + 5 / f; f := f * 10; end; label1.caption := floattostrf ( zahl, ffnumber,7,4); end; procedure TForm1.Button6Click(Sender: TObject); begin if komma = false then begin zahl := zahl * f + 6; end else begin zahl := zahl + 6 / f; f := f * 10; end; label1.caption := floattostrf ( zahl, ffnumber,7,4); end; procedure TForm1.Button7Click(Sender: TObject); begin if komma = false then begin zahl := zahl * f + 7; end else begin zahl := zahl + 7 / f; f := f * 10; end; label1.caption := floattostrf ( zahl, ffnumber,7,4); end; procedure TForm1.Button8Click(Sender: TObject); begin if komma = false then begin zahl := zahl * f + 8; end else begin zahl := zahl + 8 / f; f := f * 10; end; label1.caption := floattostrf ( zahl, ffnumber,7,4); end; procedure TForm1.Button9Click(Sender: TObject); begin if komma = false then begin zahl := zahl * f + 9; end else begin zahl := zahl + 9 / f; f := f * 10; end; label1.caption := floattostrf ( zahl, ffnumber,7,4); end; procedure TForm1.Button10Click(Sender: TObject); begin if komma = false then begin zahl := zahl * f + 0; end else begin zahl := zahl + 0 / f; f := f * 10; end; label1.caption := floattostrf ( zahl, ffnumber,7,4); end; procedure TForm1.Button13Click(Sender: TObject); begin case operator of '+' : ergebnis := ergebnis + zahl; '-' : ergebnis := ergebnis - zahl; '*' : ergebnis := ergebnis * zahl; '/' : ergebnis := ergebnis / zahl; '%' : ergebnis := ergebnis * zahl / 100; end; zahl := 0; operator := '+'; label1.Caption := floattostrf ( zahl, ffnumber,7,4); f:= 10; komma := false; end; procedure TForm1.Button14Click(Sender: TObject); begin case operator of '+' : ergebnis := ergebnis + zahl; '-' : ergebnis := ergebnis - zahl; '*' : ergebnis := ergebnis * zahl; '/' : ergebnis := ergebnis / zahl; '%' : ergebnis := ergebnis * zahl / 100; end; zahl := 0; operator := '-'; label1.Caption := floattostrf ( zahl, ffnumber,7,4); f:= 10; komma := false; end; procedure TForm1.Button15Click(Sender: TObject); begin case operator of '+' : ergebnis := ergebnis + zahl; '-' : ergebnis := ergebnis - zahl; '*' : ergebnis := ergebnis * zahl; '/' : ergebnis := ergebnis / zahl; '%' : ergebnis := ergebnis * zahl / 100; end; zahl := 0; operator := '*'; label1.Caption := floattostrf ( zahl, ffnumber,7,4); f:= 10; komma := false; end; procedure TForm1.Button16Click(Sender: TObject); begin case operator of '+' : ergebnis := ergebnis + zahl; '-' : ergebnis := ergebnis - zahl; '*' : ergebnis := ergebnis * zahl; '/' : ergebnis := ergebnis / zahl; '%' : ergebnis := ergebnis * zahl / 100; end; zahl := 0; operator := '/'; label1.Caption := floattostrf ( zahl, ffnumber,7,4); f:= 10; komma := false; end; procedure TForm1.Button11Click(Sender: TObject); begin case operator of '+' : ergebnis := ergebnis + zahl; '-' : ergebnis := ergebnis - zahl; '*' : ergebnis := ergebnis * zahl; '/' : ergebnis := ergebnis / zahl; '%' : ergebnis := ergebnis * zahl / 100; end; zahl := 0; operator := '%'; label1.Caption := floattostrf ( zahl, ffnumber,7,4); f:= 10; komma := false; end; procedure TForm1.Button18Click(Sender: TObject); begin case operator of '+' : ergebnis := ergebnis + zahl; '-' : ergebnis := ergebnis - zahl; '*' : ergebnis := ergebnis * zahl; '/' : ergebnis := ergebnis / zahl; '%' : ergebnis := ergebnis * zahl / 100; 'h' : begin f := ergebnis; ergebnis := 1; for i := 1 to trunc(zahl)do begin ergebnis := ergebnis * f; end; end; 'w' : begin w := ergebnis; ergebnis := 0; repeat ergebnis := ergebnis + 0.00001; f := 1; for i := 1 to trunc (zahl) do begin f := f * ergebnis; end; until f >= w; ergebnis := ergebnis - 0.00001; end; end; zahl := 0; operator := '+'; label1.Caption := floattostr ( zahl); label1.caption := floattostrf (ergebnis, ffnumber,7,4); ergebnis := 0; f := 10; end; procedure TForm1.Button19Click(Sender: TObject); begin komma := true; f := 10; end; procedure TForm1.Button12Click(Sender: TObject); begin case operator of '+' : ergebnis := ergebnis + zahl; '-' : ergebnis := ergebnis - zahl; '*' : ergebnis := ergebnis * zahl; '/' : ergebnis := ergebnis / zahl; '%' : ergebnis := ergebnis * zahl / 100; end; zahl := 0; operator := 'h'; label1.Caption := floattostrf ( zahl, ffnumber,7,4); f:= 10; komma := false; end; procedure TForm1.Button17Click(Sender: TObject); begin case operator of '+' : ergebnis := ergebnis + zahl; '-' : ergebnis := ergebnis - zahl; '*' : ergebnis := ergebnis * zahl; '/' : ergebnis := ergebnis / zahl; '%' : ergebnis := ergebnis * zahl / 100; end; zahl := 0; operator := 'w'; label1.Caption := floattostrf ( zahl, ffnumber,7,4); f:= 10; komma := false; end; end. :-D [edit=Phoenix]Derlphi-Tags gesetzt. Das nächste mal selber machen. Mfg, Phoenix[/edit] |
Re: Taschenrechner!!??
also dafür dass ihr erst seit ner woche delphi behandelt würde ich sagen dein lehrer hat nen platten ^^ bei uns wurde dat anders gelehrt. aber ich hab ja auch mit pascal angefangen und net mit delphi ^^
viel erfolg weiterhin! |
Re: Taschenrechner!!??
Ich finde das der Code von deinem Lehrer sehr schlecht ist, die Buttons und Variablen sind nicht ordentlich benannt, der Taschenrechner rechnet nicht Punkt vor Strich,.......
Ich finde wenn man jemandem etwas beibringen möchte, dann sollte man es ordentlich machen. |
Re: Taschenrechner!!??
Ich weiß er meinte auch nur wir sollen es mal versuchen. Aber ich wollte es gerne ausprobieren und da dachte ich mir hol ich mir mal hilfe.
Das der nicht so gut rechnet habe ich auch schon gemerkt naja der macht das auch nicht so oft mit delphi. Aber trotzdem danke für eure Mühen Gruß Crank09 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz