Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Проблема с массивом случайных чисел

Автор: nblazhko 11.05.2008 1:38

Создал массив с помощью рандома но он выдает какие то запредельные цифры,не подскажите почему?


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, Buttons;

type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Label1: TLabel;
BitBtn1: TBitBtn;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
x:array[1..3,1..3] of integer;
i,j:integer;
begin
randomize;

for i:=1 to 3 do
for j:=1 to 3 do

x[i,j]:=random(10);
for i:=0 to 2 do
for j:=0 to 2 do
StringGrid1.Cells[i,j]:=IntToStr(x[i,j]);
end;

end.

Автор: volvo 11.05.2008 2:00

Цитата
не подскажите почему?
Ты скажи спасибо, что вообще не вылетает smile.gif

У тебя массив индексируется с 1 до 3? Чего ж ты обращаешься к индексу = 0? Там мусор (массив-то локальный, был бы глобальный - были бы нули)...

Автор: nblazhko 11.05.2008 2:15

 
for i:=0 to 2 do
for j:=0 to 2 do
StringGrid1.Cells[i,j]:=IntToStr(x[i,j]);



Это для вывода массива в стринг грид

Автор: snopy 11.05.2008 2:52

Попробуй так

Код

procedure TForm1.FormCreate(Sender: TObject);
var
x:array[1..3,1..3] of integer;
i,j:integer;
begin
randomize;

for i:=1 to 3 do
for j:=1 to 3 do

x[i,j]:=random(10);
for i:=1 to 3 do
  for j:=1 to 3 do
  StringGrid1.Cells[i,j]:=IntToStr(x[i,j]);
end;
end.


Автор: nblazhko 11.05.2008 2:58

неа,он выводит в стринг грит все элементы кроме 1 столбца и первой строки

Автор: мисс_граффити 11.05.2008 5:34

а так?

 for i:=1 to 3 do
for j:=1 to 3 do
begin
x[i,j]:=random(10);
StringGrid1.Cells[j-1,i-1]:=IntToStr(x[i,j]);
end;

Автор: nblazhko 11.05.2008 13:35

Вот так да работает,спасибо! smile.gif