Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Array in Prozedur füllen
Sarahram - So 12.06.11 22:42
Titel: Array in Prozedur füllen
Hi Zusammen.
Ich bin noch Anfänger und habe folgende Aufgabenstellung:
Erstellen sie ein kleine Prozedur, welche ein vordefiniertes Array a:array[1..50]of integer; jeweils mit den Werten i*i (i sei des Array index)initialisiert. Sie können von der Deklaration sowohl des arrays als auch integer i ausgehen
Ich habe die Prozedur so geschrieben:
Delphi-Quelltext
1: 2: 3: 4:
| procedure example(); begin a[i]:=i*i; end; |
Was meint Ihr? Könnt Ihr das bestätigen? Ich weiß, es handelt sich eher um ein Verständnisproblem als um ein delphi Problem.
Vielen Dank und viele Grüße.
Sarahram
Moderiert von
Narses: Delphi-Tags hinzugefügt
Moderiert von
Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
ALF - So 12.06.11 22:57
Hi und :welcome:
Hast Du Dir schon mal die For schleife angeschaut?
Die Procedure die Du geschrieben hast, dürfte da allein nicht reichen :wink:
Gruss ALf
Narses - So 12.06.11 23:00
Moin und :welcome: im Forum!
Sarahram hat folgendes geschrieben : |
Array a:array[1..50]of integer;
[...]
Delphi-Quelltext 1: 2: 3: 4:
| procedure example(); begin a[i]:=i*i; end; | |
Du hast die Dimensionen des Arrays nirgendwo in deinem Code berücksichtigt. :lupe: Woher soll der Computer denn wissen, welche Elemente er mit Werten füllen soll? :idea: ;)
cu
Narses
//EDIT: Oh, zu langsam... :?
Sarahram - So 12.06.11 23:34
Danke für die schnellen Antworten.
Laut Aufgabenstellung ist das Array und die Variable i global definiert und ich benötige nur die Prozedur.
Man könnte Prozedur auch so schreiben
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| produre example(); Var i: integer; begin
for i:=0 to 100 do; begin a[i]:=i*i; end; end; |
Beide Version sind auch lauffähig. In der ersten Version würde ich die for-Schleife in das Hauptprogramm schreiben.
Gefragt ist nur die Prozedur (so möchte mein Lehrer das handgeschrieben) und das Problem besteht darin, dass laut Aufgabenstellung das Array
jeweils gefüllt wird.
Ich verstehe das so, dass das Array pro Aufruf der Prozedur an der Stelle i mit dem aktuellen Wert i*i gefüllt werden soll.
Programmiertechnisch habe ich das Verstanden. Darum auch meine Anmerkung, dass es sich eher um ein Verständnisproblem handelt.
Viele Grüße
Sarahram
Moderiert von
Narses: Delphi-Tags hinzugefügt
Moderiert von
Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
jaenicke - So 12.06.11 23:43
Sarahram hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4:
| for i:=0 to 100 do; begin a[i]:=i*i; end; | |
Ich bezweifle stark, dass du das so meinst wie du es geschrieben hast. ;-)
In dem Code ist die Schleife vor dem begin zu Ende. Denn das Semikolon beendet die Anweisung.
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| for i:=0 to 100 do;
begin a[i]:=i*i; end; |
Deshalb sollte auch eine Compilerwarnung kommen, weil i dort nicht mehr eindeutig definiert ist. ;-)
Sarahram - Mo 13.06.11 00:02
Moderiert von
Narses: Komplett-Zitat des letzten Beitrags entfernt.
Uups. Das war ein Schreibfehler.
Habe ich so nicht programmiert.
ALF - Mo 13.06.11 00:06
Nein, das array wird komplett gefüllt wenn Du die Procedure aufrufst!
Anders würde es so aussehen
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm1.Buttonclick1(Sender: TObject); begin if i < 50 then begin i:=i +1; procedure example(); end;
for i:= 0 to 50 do begin procedure example() end; end;
procedure TForm1.example(); begin a[i]:=i*i; end; |
dann würdest Du mit jedem klck dein array einzeln auffüllen oder in der Forschleife komplett.
Im Prinzip also schon richtig was Du geschrieben hast
Nur ist es nicht ganz so konform :wink:
Weil i ja irgenwie irgenwo definiert ist und eventl wenn man i noch mal verwendet fehler verursachen kann!
Gruss Alf
Narses - Mo 13.06.11 00:07
Moin!
Sarahram hat folgendes geschrieben : |
Gefragt ist nur die Prozedur (so möchte mein Lehrer das handgeschrieben) und das Problem besteht darin, dass laut Aufgabenstellung das Array jeweils gefüllt wird.
Ich verstehe das so, dass das Array pro Aufruf der Prozedur an der Stelle i mit dem aktuellen Wert i*i gefüllt werden soll. |
Also wenn das die "Original-Aufgabenstellung" ist:
Sarahram hat folgendes geschrieben : |
Erstellen sie ein kleine Prozedur, welche ein vordefiniertes Array a:array[1..50]of integer; jeweils mit den Werten i*i (i sei des Array index)initialisiert. |
dann würde ich sagen, dass du es falsch verstanden hast. Ich hätte als Lehrer die Schleife in der Prozedur erwartet. :nixweiss:
cu
Narses
Sarahram - Mo 13.06.11 00:18
Vielen Dank für die Antworten.
Initialisieren des Arrays ist wohl das Stichwort.
Also ... Schleife in die Prozedur.
Viele Grüße
Sarahram
ALF - Mo 13.06.11 00:25
Ich war eigentlich der Meinung das das Array bereits initialisiert wurde :autsch:
Und nun sollte es nur um das befüllen gehen :gruebel:
Lol
Gruss Alf
Sarahram - Mo 13.06.11 00:36
Ich habe das eigenzliche Problem auch nicht sehr gur beschrieben.
Viele Grüße
Sarahram
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!