![]() |
|
|
Регистрация | << Правила форума >> | 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); |