Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Array mit Zufallszahlen (https://www.delphipraxis.net/122819-array-mit-zufallszahlen.html)

holle 22. Okt 2008 15:14


Array mit Zufallszahlen
 
Dieses einfache Programm soll 10 Zufallszahlen erzeugen und anschließend ausgeben. Als Ausgabe erhalte ich jedoch 0 0 0... Was mache ich falsch?

Delphi-Quellcode:
program min_array;
uses
        crt;
const
        LENGTH = 10;
var
        zufall: array[0..LENGTH] of integer;

procedure fillArray(a: array of integer);
var    i: integer;
begin
        for i := 0 to LENGTH - 1 do
                a[i] := random(100) + 1;
end;

procedure printArray(a: array of integer);
var    i: integer;
begin
        for i := 0 to LENGTH - 1 do
                writeln(a[i]);
end;


begin
        randomize;
        clrscr;

        fillArray(zufall);
        printArray(zufall);

        readln;
end.

alzaimar 22. Okt 2008 15:15

Re: Array mit Zufallszahlen
 
Ersetze in den Prozedurköpfen 'a : Array ...' durch 'Var a : Array'.

Helmi 22. Okt 2008 15:19

Re: Array mit Zufallszahlen
 
Und ruf
Delphi-Quellcode:
randomize;
nur einmal auf - nicht jedesmal

Am Besten im OnCreate

Fussball-Robby 22. Okt 2008 15:23

Re: Array mit Zufallszahlen
 
Zitat:

Zitat von Helmi
Und ruf
Delphi-Quellcode:
randomize;
nur einmal auf - nicht jedesmal

Am Besten im OnCreate

Der Code, den er da zeigt, scheint von einer Konsolenanwendung zu sein. Der Teil, in dem Randomize aufgerufen wird, wird nur einmal ausgeführt.

DeddyH 22. Okt 2008 15:25

Re: Array mit Zufallszahlen
 
Versuch es mal mit Typisieren und Übergabe by Reference (ungetestet).
Delphi-Quellcode:
program min_array;
uses
        crt;
const
        LENGTH = 10;
type
        TZufall = array[0..LENGTH - 1] of integer;
var
        zufall: TZufall;

procedure fillArray(var a: TZufall);
var    i: integer;
begin
        for i := 0 to LENGTH - 1 do
                a[i] := random(100) + 1;
end;

procedure printArray(var a: TZufall);
var    i: integer;
begin
        for i := 0 to LENGTH - 1 do
                writeln(a[i]);
end;


begin
        randomize;
        clrscr;

        fillArray(zufall);
        printArray(zufall);

        readln;
end.

Fussball-Robby 22. Okt 2008 15:27

Re: Array mit Zufallszahlen
 
Zitat:

Zitat von DeddyH
Versuch es mal mit Typisieren und Übergabe by Reference (ungetestet).

Muss garnicht sein, denn das hier funktioniert doch:
Zitat:

Zitat von alzaimar
Ersetze in den Prozedurköpfen 'a : Array ...' durch 'Var a : Array'.

Wobei var auch nur bei fillArray() stehen muss.

DeddyH 22. Okt 2008 15:29

Re: Array mit Zufallszahlen
 
Da bin ich mir bei TP eben nicht mehr so sicher, deshalb hab ich das so gemacht, sollte immer gehen ;)

[edit] Durch das Var wird das eben zur Übergabe by Reference, oder nicht? Außerdem war sein Ursprungsarray ein Element zu groß, da typisiere ich lieber und arbeite mit dem Typen weiter, der hat dann immer die gleiche Größe. [/edit]

[edit2]
Zitat:

Wobei var auch nur bei fillArray() stehen muss.
Da hast Du Recht, das war überflüssig, stört aber auch nicht. [/edit2]

Cyf 22. Okt 2008 16:06

Re: Array mit Zufallszahlen
 
Delphi-Quellcode:
zufall: array[0..LENGTH] of integer;
Kein so dramatischer Fehler, aber du reservierst ein Integer mehr, als du benutzt, da du in den Schleifen nur bis LENGTH-1 durchläufst. Also da noch -1 hin und die Namensgebung der Konstante macht Sinn. :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz