Autor |
Beitrag |
Ottchen
Beiträge: 43
|
Verfasst: Do 21.11.02 11:27
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?
Ottchen
_________________ See you.
|
|
UGrohne
Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: 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.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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!
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
UGrohne
Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Do 21.11.02 18:07
OK, geb mich geschlagen , 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.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 21.11.02 18:17
Zitat: | war wohl noch zu früh am Morgen |
Sozusagen noch tiefe Nacht!
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Ottchen
Beiträge: 43
|
Verfasst: 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; |
_________________ See you.
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
UGrohne
Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: 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*
|
|