Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

массив


Страницы:   1 2 3

дямак ©   (2006-05-08 11:46:00) 

здравствуйте, Уважаемые мастера! На днях вот начал юзать delphi, прочитал какую-то книгу по совету одного из мастеров, вроде чё-то понял, но на подробное изучение не хватает времени, так как мне лабу в четверг сдавать надо , а она у меня ещё не сделана, точнее одну про график функции я сделал, а вот про массив никак! Может я тупой такой, вот я тут начал делать заполнение массива случайно

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Memo1: TMemo;
   Button1: TButton;
   Edit1: TEdit;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

function Unic(var flag: array of boolean; range: integer): integer;
begin
 { возвращение одного случайного числа}
 result := random(range);
 while flag[result] do
   result := random(range); //какого числа еще нет
 flag[result] := true; //чтобы не было повторений
end;

procedure MassRand(range: integer; var inputMass: array of integer);
var
 i: integer;
 bm: array of boolean;
begin
 SetLength(bm, length(inputMass));
 for i := 0 to length(inputMass) - 1 do
 begin
  inputMass[i]:=Unic(bm,range);//заполнение от 0,1, ... ,до N
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 i: integer;
 mass: array of integer; //собственно сам массив
begin
 Memo1.Lines.Clear; //Ввод результата
 SetLength(mass, strtoint(Edit1.Text)); //скока линий
 MassRand(strtoint(Edit1.Text), mass); //использование процедуры
 for i := 0 to length(mass) - 1 do
 begin
   Memo1.Lines.Add(inttostr(mass[i])); //результат
 end;
end;

end.

но он по ходу одномерный (или как он там называется), а мне нужно чтобы  он был многомерный (может я неправильно выражаюсь, ну чтобы например 10 строк и 10 столбцов) объясните чё я неправильно делаю?


Шпиён   (2006-05-08 15:21:00) [21]


> я понимаю что из стороки  TMatrix=array [1..10,1..10] of
> integer; следует что должно быть 10 на 10

Ничего подобного. 10 на 10 следует из строки
row:=10;col:=10;


KilkennyCat   (2006-05-08 15:20:00) [22]


> как расссояние между столбцами уменьшить?


заменить #9 на '    '


дямак   (2006-05-08 15:20:00) [23]

сорри, она 10 на 10, просто между столбцами расстояние большое, вот я и подумал что больше, кстати как расссояние между столбцами уменьшить?


дямак   (2006-05-08 15:16:00) [24]

я понимаю что из стороки  TMatrix=array [1..10,1..10] of integer; следует что должно быть 10 на 10 ,но не получается, не верите попробуйте сами


Шпиён   (2006-05-08 15:15:00) [25]


> просто в приведённом коде Шпиёна матрица появляется,но в
> неё 4 столбца и где-то 30 строк

Это каким-же образом ты так код испортить умудрился, чтобы он вместо матрицы 10x10 выдал матрицу 30х4? -(
ПлакалЪ


row:=StrToInt(Edit1.Text);
col:=StrToInt(Edit2.Text);


KilkennyCat   (2006-05-08 15:13:00) [26]


> 4 столбца и где-то 30 строк


а должно быть 10 на 10...


дямак   (2006-05-08 15:07:00) [27]

символов в матрице, просто в приведённом коде Шпиёна матрица появляется,но в неё 4 столбца и где-то 30 строк


Пусик   (2006-05-08 15:04:00) [28]


> дямак ©   (08.05.06 14:59) [14]
>
> спасибо за помощь!
> простите за назойливость, но как сделать так чтобы кол-во
> символов


Символов в чем?


дямак   (2006-05-08 14:59:00) [29]

спасибо за помощь!
простите за назойливость, но как сделать так чтобы кол-во символов можно было самому вводить например в TEdit? а то уж больно она большая получается в этом примере!


Шпиён   (2006-05-08 14:47:00) [30]


type
TMatrix=array [1..10,1..10] of integer;

procedure TForm1.Button1Click(Sender: TObject);
var
Arr:TMatrix;
i,j:integer;
s:string;
row,col:integer;
   procedure RandomMatrix(var M:TMatrix;r,c:integer);
   var
    i,j:integer;
    g: Integer;
   begin
        g := r*c;
        for i:=1 to r do
            for j:=1 to c do M[i,j]:=random(g);
   end;

begin
   row:=10;col:=10;
   RandomMatrix(Arr,row,col);
   for i:=1 to row do
   begin
       s:='';
       for j:=1 to col do s:=s+IntToStr(Arr[i,j])+#9;
       Memo1.Lines.Add(s);
end;
end;


Шпиён   (2006-05-08 14:35:00) [31]


> дямак ©   (08.05.06 14:28) [9]

И вовсе незачем так орать (с)


дямак   (2006-05-08 14:35:00) [32]

ну помоги если можешь, а то уж очень хочется самому лабу сделать, а то до этого всегда списывал, а теперь вот начал разбираться да поздновато!


Пусик   (2006-05-08 14:32:00) [33]


> и где она ваще должна появляться в Memo или StringGrid?


Так это тебе выбирать, где матрица должна отобразиться.


дямак   (2006-05-08 14:28:00) [34]

ТЫ НАВЕРНОЕ МЕНЯ НЕ ПОНЯЛ. Я НАПИСАЛ ПРОЦЕДУРУ ДЛЯ ИНИЦИАЛИЗАЦИИ, А МНЕ НУЖНО ЕЩЁ НАПИСАТЬ ПРОЦЕДУРУ ДЛЯ ОБРАБОТЧИКА СОБЫТИЯ OnClick чтоб при нажатии на кнопку Button1 появлялась матрица 10*10, и где она ваще должна появляться в Memo или StringGrid?


Пусик   (2006-05-08 14:22:00) [35]


> дямак ©   (08.05.06 14:19) [7]
>
> нет, любыми, плиз напиши если можешь

Так ты уже написал.

type
TMatrix=array [1..10,1..10] of integer;

var
Arr:TMatrix;

procedure RandomMatrix(var M:TMatrix;r,c:integer);
var
 i,j:integer;
 g: Integer;
begin
 g := r*c;
 for i:=1 to r do
  for j:=1 to c do M[i,j]:=random(g);
end;


дямак   (2006-05-08 14:19:00) [36]

нет, любыми, плиз напиши если можешь


Пусик   (2006-05-08 14:14:00) [37]

Инициализировать нужно неповторяющимися значениями или такого жесткого условия нет?


дямак   (2006-05-08 14:02:00) [38]

ещё такой вопросик! объясните или лучше напишите плиз как мне эту процедуру инициализации матрицы случайными целыми числами  адресовать procedure TForm1.Button1Click(Sender: TObject); (ну т.е. чтоб при нажатии на кнопку появлялась матрица 10*10)

type
 TMatrix=array [1..10,1..10] of integer;

var
 Arr:TMatrix;

procedure RandomMatrix(var M:TMatrix;r,c:integer);
var i,j:integer;
begin
for i:=1 to r do
 for j:=1 to c do
  M[i,j]:=random(10);
end;


Плохиш   (2006-05-08 12:08:00) [39]

mas: array of array of integer;


alex-drob   (2006-05-08 12:06:00) [40]


> _mas: array of integer;

Ошибся
type TMas=array of integer;
var mas:array of tmas;


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо