Hallo
SOS.Ich bin in Zeitdruck und muss mit Delphi einen Taschenrechner programmieren.Kann mir jemand dabei helfen!?
carozun Gast |
carozun Gast |
Hallo
SOS.Ich bin in Zeitdruck und muss mit Delphi einen Taschenrechner programmieren.Kann mir jemand dabei helfen!?
Klar helfen wir Dir, dafür sind wir doch da.
Also, für einen Taschenrechner brauchst Du meistens Plus, Minus, Division und Multiplikation.
Ich weiss ja nicht, wie das genau in Delphi aussieht, aber in C geht das ungefähr so:
Für die Addition ( Plus-Rechnen ):
a = b + c;
wobei b und c natürlich sinnvolle Werte haben sollten und vorzugsweise vom Typ int sein sollten.
Für die Subtraktion ( das ist das Minus! ):
a = b - c;
Für die Multiplikation ( das ist mal-Rechnen! ):
a = b * c;
Und die Division ( das ist das Teilen ) geht so:
a = b / c;
Bei der Division lohnt es sich, Fliesskommawerte zu benutzen und aufzupassen, dass c nicht gerade den Wert 0 hat.
Um einen Taschenrechner zu programmieren, müssen da jetzt natürlich noch irgendwie die Werte in b und c reingehen. Das ist sicherlich schwierig. Ich würde dafür den Benutzer eine Auswahl an Zahlen präsentieren. Bewährt hat sich, diese Zahlen aus den Ziffern von 0 - 9 zusammenzubauen. Das ist nicht so schwer und für jeden Benutzer leicht zu verstehen.
Wenn Dir das alles zu kompliziert ist:
Eine einfache Google-Suche nach "Delphi Taschenrechner" liefert eine schier unendliche Zahl an Taschenrechnern in Delphi mitsamt Quelltext. Da Dich diese Suche aber schon überfordert hat, kommen mir dann doch Zweifel, ob Du das mit dem Plus und Minus in angemessener Zeit verstehen wirst...
Hallo,
Ich bin ein ziemlicher Anfänger was Delphi bzw. programmieren betrifft. Ich habe aber bereits einen Taschenrechner geschafft, bei dem man die Zahlen eingeben kann. Also mit 2 Editfeldern und den Rechenoperationen.
Jetzt wollte ich aber einen versuchen, bei dem die Zahlen von 0-9 als Buttons vorhanden sind und man nur klicken muss. Ich habe allerdings keine Ahnung wie Delphi sich die Zahlen merken kann oder generell eine Vorstellung wie das funktionieren könnte..
Es wäre nett, wenn mir jemand helfen könnte
Bisher habe ich folgenden Quelltext:
nit Ansatztaschenrechner;
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;
Edit1: TEdit;
procedure Button1Click(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);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
var Zahl: String;
x, Zwischenergebnis: real;
Operation: Integer;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.text := Button1.caption ;
Zahl := Edit1.text;
x := StrToFloat(Zahl);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.text := Edit1.text + Button2.caption;
Zahl := Edit1.Text;
x := StrToFloat(Zahl);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.text := Edit1.text + Button3.caption;
Zahl := Edit1.Text;
x := StrToFloat(Zahl);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Edit1.text := Edit1.text + Button4.caption;
Zahl := Edit1.Text;
x := StrToFloat(Zahl);
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Edit1.text := Edit1.text + Button5.caption;
Zahl := Edit1.Text;
x := StrToFloat(Zahl);
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
Edit1.text := Edit1.text + Button6.caption;
Zahl := Edit1.Text;
x := StrToFloat(Zahl);
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
Edit1.text := Edit1.text + Button7.caption;
Zahl := Edit1.Text;
x := StrToFloat(Zahl);
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
Edit1.text := Edit1.text + Button8.caption;
Zahl := Edit1.Text;
x := StrToFloat(Zahl);
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
Edit1.text := Edit1.text + Button9.caption;
Zahl := Edit1.Text;
x := StrToFloat(Zahl);
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
Edit1.text := Edit1.text + Button8.caption;
Zahl := Edit1.Text;
x := StrToFloat(Zahl);
end;
end.
weiter weiß ich leider nicht
Danke schonmal.
Hmm, schwierig. Da du die Buttons & Co. sehr clever benannt hast, hat ein potentieller Helfer keine Chance, nachzuvollziehen, welcher Button was macht und was wo hin soll (Edit1/Edit2/...?). Die Zahl merkst du dir ja schon über den Code in den Callback-Funktionen (das könnte man für die Zahlen sicherlich auch cleverer lösen, aber das ist dann Feintuning). Du musst dir wahrscheinlich bloß noch eine Variable machen, wo du die zweite Zahl reinschreiben kannst... und dann wenn ein Operationsbutton gedrückt wird, die aktuelle Zahl da reinkopieren und die Operation merken. Dann beim =Button die beiden irgendwie zusammenrechnen... also ca. so (kann kein Delphi, musst es aber nur noch nachprogrammieren):
AddButtonClick() {
y = x;
Operation = 1; // irgendeine Konstante halt, die die Operation repräsentiert
}
// für die anderen Operationen ähnlich
ResultButtonClick() {
switch (Operation) {
case 1: Edit2.Text = x + y;
case 2: ... usw
}
}
Zumindest für 2 Zahlen sollte das halbwegs funktionieren.
in der schule haben wir auch grade angefangen einen delphi taschenrechner zu programmieren
ich habe 3 labels angelegt
in label 1 schreibe ich in label 2 speichert er die erste zahl zum rechnen und in label 3 speichert er das rechenzeichen
bei allen buttons mit zahlen habe ich geschrieben (die eins steht für die ziffer die geschrieben werden soll, dieses beispiel wäre also für button 1:
begin
label1.caption:=label1.caption+'1'
end;
bei allen rechenoperationen habe ich geschrieben (das plus muss natürlich bei anderen rechenoperationen geändert werden):
begin
label2.caption:=label1.caption;
label1.caption:='';
label3.caption:='+';
label3.visible:=false; (das ist dafür das man das dritte label und die rechenzeichen nicht sieht)
end;
bei = habe ich geschrieben:
if label3.caption='+' then
begin
label1.caption:=inttostr(
strtoint(label2.caption)+
strtoint(label1.caption)
);
label2.caption:='';
end;
(das selbe für * und -)
für /
if label3.caption='/' then
begin
label1.caption:=floattostr(
strtofloat(label2.caption)/
strtofloat(label1.caption)
);
label2.caption:=''
end;
bei mir hat es funktioniert alledings für delphi 2005 also schon etwas veraltet
lg
wir haben schon einen normalen rechner gemacht doch nun verlangt der lehrer wir sollen die vier grundrechnungsarten in eine combobox stecken so das wir immmer auswählen können mit was wir rechnen hab leider kA von comboboxen und würde mich sehr über hilfe freuen.
« Hilfe in C | Hover-Navigation in HTML » | ||