Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.05.2012, 02:20
Jia Jia вне форума
Прохожий
 
Регистрация: 31.05.2012
Сообщения: 2
Репутация: 10
По умолчанию Матрица с элементами из нескольких значений

Есть массив содержащий несколько значений. Например 7, 9 и 12. Из них нужно составить матрицу следующего вида:
(1;1) (7;9) (7;12)
(9;7) (1;1) (9;12)
(12,7)(12;9)(1;1)
То есть состоящую из пар значений. При чём главная диагональ равна единице, всё что ниже главной диагонали - такие же пары значений, что и выше только наоборот.
Вопрос как это реализовать с возможностью потом выдёргивать значения по отдельности для дальнейших преобразований? Можно ли реализовать при помощи записей?
Ответить с цитированием
  #2  
Старый 31.05.2012, 02:47
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 340
Версия Delphi: 11.3
Репутация: 429
Сообщение

Возможно все! Есть хоть какие-нибудь наработки?
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #3  
Старый 31.05.2012, 07:06
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

Код:
array[0..2,0..2] of tpoint
Цитата:
как это реализовать
это основы

Последний раз редактировалось Pyro, 31.05.2012 в 07:22.
Ответить с цитированием
  #4  
Старый 31.05.2012, 21:06
Jia Jia вне форума
Прохожий
 
Регистрация: 31.05.2012
Сообщения: 2
Репутация: 10
По умолчанию

Насколько я знаю 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  
Старый 01.06.2012, 06:18
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

можно вроде того:
Код:
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);
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:41.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025