![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
массив
дямак © (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;