Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Zahlenfolge darstellen
Ottchen - Do 21.11.02 11:27
Titel: Zahlenfolge darstellen
Es soll die Zahlenfolge
1 3 7 15 31 ...
so lange dargestelt werden (im StringGrid), bis die Summe dieser Zahlen 2000 erreicht. Wie geht das mit einer repeat-until-Schleife? (Mit Feldern sicherlich zu schwierig)
Also die Bildungsvorschrift für die Zahlenfolge lautet: a:=2*a+1.
Aber wie bildet man die Summe? Muss man die einzelnen Felder des StrinGrids auslesen?
HJat jmd. eine springende Idee? :idea:
Ottchen
UGrohne - Do 21.11.02 11:36
Du führst in einer Schleife die Darstellung der Zahlen durch, also immer mit Deiner Bedingung, mit einem initialisierten Anfangswert, dann brauchst Du die Summe, d.h. du hast ne weitere Variable summe, zu der Du bei jedem Schleifendurchlauf das a dazuzählst, könnte also folgendermaßen aussehen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| a:=0; summe:=0; repeat zahl:=2*a+1; summe:=summe+zahl; StringGrid.Cells[0,a]:=inttostr(zahl); Inc(a); until a>=2000; |
Achtung, das is ungetestet *g*
Gruß
Christian S. - Do 21.11.02 18:04
Eher so:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| a:=0; summe:=0; i:=0;
repeat a:=2*a+1; summe:=summe+a; StringGrid.Cells[0,i]:=inttostr(a); inc(i); until summe>=2000; |
MfG,
Peter
P.S.: Auch ungetestet!
UGrohne - Do 21.11.02 18:07
OK, geb mich geschlagen :autsch: , war wohl noch zu früh am Morgen *g*. Da konnte ich noch net so richtig denken. Und Zahlenfolgen waren mir eh immer ein Graus *g*
Hehe, danke für die Korrektur.
Gruß, Uwe
Christian S. - Do 21.11.02 18:17
Zitat: |
war wohl noch zu früh am Morgen |
Sozusagen noch tiefe Nacht!
Ottchen - Do 21.11.02 19:31
Titel: Funktioniert, bis auf die Bildungsvorschrift
Hallo Ihr Fleißigen!
Also das von UGrohne funktioniert. (Unten der QT).
(Das von PeterLustig klappt bei mir auch nicht so richtig, obwohl der Code völlig logisch erscheint).
Nur leider muss irgendetwas an der Bildungsvorschrift nicht stimmen, da alle ungeraden Zahlen ausgegeben werden, und zwar:
1 3 5 7 9 11...
Ich brauche aber:
1 3 7 15 31...
Gibts da noch eine Idee?
Ottchen
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.Rechne1Click(Sender: TObject); var a, zahl, summe: integer;
begin a:=0; summe:=0; repeat StringGrid1.ColCount:=a; zahl:=2*a+1; StringGrid1.Cells[a,0]:=inttostr(zahl); summe:=summe+zahl; StringGrid1.Cells[a,1]:=inttostr(summe); Inc(a); until summe>=20; Panel2.Caption:=IntToStr(summe); end; |
Christian S. - Do 21.11.02 19:45
Hi!
Ich habe das Ganze (meinen Code) mal ausprobiert. Die einzige Ändeurng war, dass ich statt des StringGrids eine Listbox verwendet habe, wo ich die Dinger eingetragen habe. Da kommt genau die Folge heraus, die Du haben willst.
Welche Fehlermeldung erhälst Du denn bzw. was gibt der Code bei Dir aus?
MfG,
Peter
UGrohne - Do 21.11.02 21:41
Die Korrektur von Peter stimmt schon, dein QT muss so aussehen:
Zitat: |
procedure TForm1.Rechne1Click(Sender: TObject);
var a, zahl, summe: integer;
begin
a:=0; zahl:=0;
summe:=0;
repeat
StringGrid1.ColCount:=a+1;
zahl:=2*zahl+1;
StringGrid1.Cells[a,0]:=inttostr(zahl);
summe:=summe+zahl;
StringGrid1.Cells[a,1]:=inttostr(summe);
Inc(a);
until summe>=20;
Panel2.Caption:=IntToStr(summe);
end; |
Das a brauchst Du halt als Schleifenvaraible, damit das Grid richtig gefüllt wird. Achtung, Du musst bei ColCount 1 dazuzählen, weil die Variable bei 0 anfängt.
Das wird ja langsam richtig kompliziert *g*, aber so müssts gehen. Aber wie immer: Ungetestet ! *g*
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!