Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Rechner potenzprobleme


Riddig - Fr 19.09.08 21:13
Titel: Rechner potenzprobleme
hey leutz,

mach grad nen kleinen rechner


hab addieren, subtrahieren,dividieren und multiplizieren

jetzt wollte ich potenzieren aber irgendwie klappts nicht

das einzige was mir nicht ganz klar ist ob ich für die for schleife zum potenzieren die variablen lokal oder global definieren muss und ob es schlimm is wenn eine variable lokal und global definiert ist. hier mal der quellcode, vielleicht findet irgendwer den fehler

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.Button5(potenzieren)Click(Sender: TObject);
 
var

Zahl1,Zahl2,Zahl2A,Ergebnis:integer;

begin

Zahl1:=StrTointdef(edit1.text,0);
Zahl2:=StrTointdef(edit2.text,0);
zahl2A:=Zahl2;

for ergebnis := 0 to Zahl1 do
begin
Zahl2:= Zahl2*Zahl2A;
end;

label1.caption:=inttostr(ergebnis);

end;


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


Xentar - Fr 19.09.08 21:15

Wenn du "Potenzprobleme" hast, solltest du mal zum Arzt gehen.. :P
Aber dir könnte die Funktion Power(); helfen.

Nebenbei: "klappt nicht" ist KEINE Fehlerbeschreibung.. bekommst du einen Compilerfehler, oder nur das falsche Ergebnis?
Und zu deinem Quellcode: überleg doch mal, was du da machst.
- Deine For-Schleife läuft einen zu weit. 1 bis Zahl1 wäre besser
- Du gibst dir "Ergebnis" in nem Label aus - aber da schreibst du doch gar keinen Wert rein (außer den Zähler der Schleife)


Riddig - Fr 19.09.08 21:19

ja er rechnet einfach zahl1 + 1 mehr nicht, hm ja da ist was dran das probiere ich mal aus mit dem also noch ne variable = Lauf


und dann ergebnis:=lauf oder wie???

dann label1.caption:=ergebnis;

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

das problem muss woanders liegen egal was ich veränder, selbst wenn ich nur zahl1 eingebe rechnet er einfach zahl1+1


Xentar - Fr 19.09.08 21:24

Also:
Du nimmst dir eine Lauf-Variable für die Schleife. Hierfür wird meist "i" genommen.
Diese läuft von 1 bis Zahl1
Mit jedem Durchlauf multiplizierst du dein Zwischenergebnis mit der Basis, also Zahl2.
Zum Schluss gibst du dieses Ergebnis aus.


Riddig - Fr 19.09.08 21:26

ja is doch genau das oder nich??


Xentar - Fr 19.09.08 21:30

Nein, dann würde es ja gehen...
Du speicherst das Rechenergebnis jeweils in Zahl2, gibst zum Schluss aber Ergebnis aus.

Schau dir das hier nochmal an:
http://www.delphi-treff.de/no_cache/sprachen/object-pascal/schleifen


Riddig - Fr 19.09.08 21:51

ich bin jez drauf gekommen ohne mir den link anzugucken

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.Button5Click(Sender: TObject);

var ist,ergebnis,zahl1,zahl2,zahl2a:integer;

begin
Zahl1:=strtointdef(edit1.text,0);
Zahl2:=strtointdef(edit2.text,0);
Zahl2A:=Zahl2 ;

for Ergebnis := 1 to Zahl1 do
begin
ist:= Zahl2*Zahl2A;
end;

ergebnis:=ist;


label1.caption:=inttostr(ergebnis);

end;

wegn euch, thx

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt