Autor Beitrag
Riddig
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 19.09.08 21:13 
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
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: 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)

_________________
PROGRAMMER: A device for converting coffee into software.
Riddig Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: 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.

_________________
PROGRAMMER: A device for converting coffee into software.
Riddig Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 19.09.08 21:26 
ja is doch genau das oder nich??
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: 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:
www.delphi-treff.de/...ect-pascal/schleifen

_________________
PROGRAMMER: A device for converting coffee into software.
Riddig Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 19.09.08 21:51 
ich bin jez drauf gekommen ohne mir den link anzugucken
ausblenden 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