![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Есть массив содержащий несколько значений. Например 7, 9 и 12. Из них нужно составить матрицу следующего вида:
(1;1) (7;9) (7;12) (9;7) (1;1) (9;12) (12,7)(12;9)(1;1) То есть состоящую из пар значений. При чём главная диагональ равна единице, всё что ниже главной диагонали - такие же пары значений, что и выше только наоборот. Вопрос как это реализовать с возможностью потом выдёргивать значения по отдельности для дальнейших преобразований? Можно ли реализовать при помощи записей? |
|
#2
|
||||
|
||||
|
Возможно все! Есть хоть какие-нибудь наработки?
|
|
#3
|
|||
|
|||
|
Код:
array[0..2,0..2] of tpoint Цитата:
Последний раз редактировалось Pyro, 31.05.2012 в 07:22. |
|
#4
|
|||
|
|||
|
Насколько я знаю tpoint поддерживает только целочисленный тип данных, в моём случае значения будут вещественными.
Наработки есть небольшие, но я в них уже запуталась. Код:
type
mas=array [1..12, 1..11] of real;
TMyRec = record
Field1: real;
Field2: real;
end;
TMyRecArray = array[0..12] of TMyRec;
var
MyArray: TMyRecArray;
MyRec: TMyRec;
prm:array[1..12] of real;
a:array [1..2] of mas;
t,hx,y,razmer:integer;
If form1.AHP1.Checked=true then
begin
prm[t]:=norm[y]; {Заполняем одномерный массив prm нужными значениями из другого массива}
str((prm[t]):12:12,st); {перевод значения в строку}
ShowMessage('мой массив= '+st); {вывод строки для контроля заполнения}
end;
For i:=1 to razmer do
For j:=1 to razmer do
if i=j then begin
with MyRec do
begin
Field1:=1;
Field2:=1;
end;
for t:=1 to razmer do {прогоняем массив до конца}
begin
with MyRec do {работа с записью}
begin
Field1:=prm[t]; {Первое поле принимает первое значение}
Field2:=prm[t+1]; {Второе поле принимает второе значение}
t+1
end; |
|
#5
|
|||
|
|||
|
можно вроде того:
Код:
type my1 = byte;
type tdata = array[0..3] of my1;
type matr = array[0..1,0..1] of tpoint;
var dano: tdata = (1,7,9,12);
var shablon: matr = (((x:0;y:0), (x:1;y:2)), ((x:1;y:3), (x:0;y:0)));
function use(shablon: matr; data: tdata): matr;
var i,j: integer;
begin
for i:=0 to high(matr) do
for j:=0 to high(matr) do begin
result[i,j].x := data[shablon[i,j].x];
result[i,j].y := data[shablon[i,j].y];
end
end;
procedure TForm1.Button1Click(Sender: TObject);
var matrix: matr;
begin
matrix := use(shablon, dano); |