Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 4
1

Как записать множество в виде матрицы в Delphi

16.02.2010, 22:53. Показов 1111. Ответов 6
Метки нет (Все метки)

Добрый вечер, вот возникла проблема во время написания програмы на Delphi.
Подскажите пожалуйста как мне записать множество вида {Ci-1, {Ci-1 U Si}} в виде масива? Где Si множество вида {1,2,3,....,n} При условии что изначально Si = {} и Сi = {} Множество Si задаю в виде

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
type
     TSets = record
            field: Integer;
     end;
...
 
var
...
   Si: TSetS;
 
.....
 
procedure ZapolnSi;
var
   i: Integer;
begin
  for I := 0 to sgEl.ColCount - 2 do
   begin
       SetLength(Si, Length(Si) + 1);
       Si[i].field:= StrToInt(sgEl.Cells[i + 1, 1]);
   end;
...
где sgEl компонент TStringGrid в который вводятся данные. А вот множество Ci аналогично немогу записать, не сильно представляю как єто сделать. Спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.02.2010, 22:53
Ответы с готовыми решениями:

Как записать двумерный массив в виде матрицы?
Привет, форумчане,находил ответ на данный вопрос в разделе ВБА , но все они были с использованием...

Округлить элементы матрицы до сотых долей и записать в текстовый файл в виде матрицы
Господа,прошу о помощи.... Сформировать матрицу A (n*m) чисел по закону A(i,j)=(i^2*j)/(i+2j)...

Записать элементы нечетных строк матрицы в обратном виде
Нашел на форуме задачу, котоорая записывает элементы нечетных строк в обратном виде в комплексной...

Delphi 7 - Создать Imgae программно в виде матрицы
Всем привет, ребят помогите пожалуйста разобраться в Delphi 7 с автоматическим созданием Image,...

6
421 / 130 / 33
Регистрация: 24.02.2009
Сообщений: 1,122
17.02.2010, 15:13 2
Delphi
1
2
3
4
type
       G=set of 0..99;
var 
   s:array[1..7] of G;
например

Delphi
1
2
3
4
5
6
7
  s[1]:=[0,06,17,23,28,34,45,51,56,62,73,79,84,90];
   s[2]:=[01,07,12,18,29,35,40,46,57,63,68,74,85,91,96];
   s[3]:=[02,13,19,24,30,41,47,52,58,69,75,80,86,97];
   s[4]:=[03,08,14,25,31,36,42,53,59,64,70,81,87,92,98];
   s[5]:=[09,15,20,26,37,43,48,54,65,71,76,82,93,99];
   s[6]:=[04,10,21,27,32,38,49,55,60,66,77,83,88,94];
   s[7]:=[05,11,16,22,33,39,44,50,61,67,72,78,89,95,0];
0
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 4
17.02.2010, 19:44  [ТС] 3
Вечер добрый, спасибо за ответ

Возникло пару вопросов вдогонку к Вашему ответу:
- Почему массив S именно от 1 до 7
- Простите мой многострадальческий мозг, но все равно, я не пойму как дописывать новый элемент множества в массив.

Ведь изначально получается что в зависимости от количества итераций элементов в нем будет 2^n, где n кол-во итераций. Самой большей сложнстью для меня является добавление нового члена в множество и его запись в виде массива и потом чтение от туда ее для сортировки и отбрасывания лишних членов по ограничению.

В голову приходит лишь 1 идея, хранить их в таком виде как привели Вы, но в символьном виде и просто добавлять в нужное место новый элемент вида {Ci-1 U Si}. Возникает вот вопрос только по поводу нахождения этого места хранения... Да и хранить в строковом виде, это как по мне, извращение и медленное. Хотя можно применить и регулярные выражения... Хотелось бы услышать мысли на эту тему
0
421 / 130 / 33
Регистрация: 24.02.2009
Сообщений: 1,122
17.02.2010, 20:12 4
- Почему массив S именно от 1 до 7
это пример, вы можете выбрать любою числу или
Delphi
1
2
n:=100;
SetLength(s,n);
Ведь изначально получается что в зависимрсти от количества итераций элементов в нем будет 2^n, где n кол-во итераций. Самой большей сложнстью для меня является добавление нового члена в множество и его запись в виде массива и потом чтение от туда ее для сортировки и отбрасывания лишних членов по ограничению.

В голову приходит лиш 1 идея, хранить их в таком виде как привели Вы, но в символьном виде и просто добавлять в нужное место новый элемент вида {Ci-1 U Si}. Возникает вот вопрос токо по поводу нахождения єтого места хранения... Да и хранить в строково виде, это как по мне, извращение и медленное. Хотя можно применить и регулярные выражения... Хотелось бы услышать мысли на эту тему:
Есть хорошие функции для работы множествами,
например,
Delphi
1
2
3
A:=['a','b','c'];
B:=['k','l','m'];
C:=A+B;
в резултате С будет ['a','b','c','k','l','m'];;
0
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 4
17.02.2010, 22:33  [ТС] 5
Есть хорошие функции для работы множествами,
например,
Delphi
1
2
3
A:=['a','b','c'];
B:=['k','l','m'];
C:=A+B;
в резултате С будет ['a','b','c','k','l','m'];;[/QUOTE]

Да, но проблема в том что у мну уже на втором шаге при Si = [10,11,12,13] При n=4

Сi будет иметь вид:

1 итерация: Сi = {{}, {10}}
2 итерация: Ci = {{}, {10}, {11}, {10,11}}
3 итерация: Ci = {{}, {10}, {11}, {10,11}, {12}, {10, 12}, {11, 12}, {10, 11, 12}}
4 итерация: Ci = {{}, {10}, {11}, {10,11}, {12}, {10, 12}, {11, 12}, {10, 11, 12}, {13}, {10, 13}, {11, 13}, {10, 11, 13}, {12, 13}, {10, 12, 13}, {11, 12, 13}, {10, 11, 12, 13}}

Вот сдесь и выходит затык( Разве что пробывать в виде хранения масива в масиве что ли....

Что то вроде

Delphi
1
2
3
4
5
6
7
8
...
type
     TArr = array [1..16] of String;
...
var
...
    Ci: array [1..4] of TArr;
...
в массиве с 1..4 шаги итераций. а с 1..16 будут элементы множества полученного... строкой вида '{..}' 1 элемент масива 1 элемент последовательности. А потом парсить строки... Но это дико медленно...
0
421 / 130 / 33
Регистрация: 24.02.2009
Сообщений: 1,122
17.02.2010, 23:27 6
Можна и так
Delphi
1
c:array array of string;
а что за задача? Аранжемант вычислишь что ли?...
Наверна, придется искать другую путь для решение
0
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 4
18.02.2010, 14:07  [ТС] 7
Наш декан придумал вроде как новый способ "Задача линейной максимизации на множестве обьеденений специального вида, з одним дополнительным ограничением"

Задача.doc
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.02.2010, 14:07

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как записать множество?
Пусть на множестве М={1,2,3,4,5,6,7,8,9}определено отношение R={(a,b)|(a+1)делитель(a+b)} ...

Записать на место положительных элементов матрицы единицы и вывести ее в виде таблицы
записать на место положительных элементов матрицы А(10,10) единицы и вывести ее в виде таблицы....

Отсортировать элементы матрицы по убыванию и записать результат в виде вертикальной спадающей змейки
Дана матриця (N+15)x(N+15). Відсортувати її елементи за зменшенням і записати результат у вигляді...

Найти столбец матрицы с наименьшей суммой элементов и записать его в виде одномерного массива
Для произвольного двумерного массива найти столбец с наименьшей суммой элементов и записать его в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.