Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
1

Создать объект-Таблица

28.03.2014, 23:43. Показов 1190. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Преподаватель на паре привел пример построения таблицы через списки, и мне это нужно реализовать в задании.
Но код, который он приводил к сожалению без комментариев и понять, принцип построения таблиц очень тяжело. Искал в интернете информацию, но ничего не нашел.
Пожалуйста, объясните общий принцип построения таблиц.
Код во вложении(Мне кажется, что важны первые 2 листа).
Я правильно понимаю, что каждый объект List представляет собой столбец в таблице, и если мне потребуется сделать 6 полей в таблице, то мне потребуется создавать Листов наследников, которые будут содержать доп атрибуты, а в конце на основе финального листа сделать таблицу.
Вот код программы
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
program Project1;
 
{$APPTYPE CONSOLE}
 
{$R *.res}
 
uses
  System.SysUtils;
     type
     s=^spis;
     spis=record
       inf:integer;
       next:s;
 
 
     end;
       list=object
 
         t:s;
         constructor init;
         procedure add(i:integer);
         procedure outlist;
         destructor done;
 
       end;
 
       list1=object(list)
         constructor init;
         procedure remove(m:integer);
         destructor done;
       end;
       table= object(list1)
         m:1..10;
         x:array[1..10] of s;
         constructor init(p:integer);
         procedure add(y,z:integer);
         procedure remove(y,z:integer);
         procedure outtable;
         destructor done;
 
       end;
       constructor list.init;
       begin
  t:=nil;
       end;
       procedure list.add(i: Integer);
       var v:s;
       begin
         if t=nil then
         begin
           new(t);
           t^.next:=nil;
           t^.inf:=i;
         end
         else
         begin
           new(v);
           v^.next:=t;
           t:=v;
           t^.inf:=i;
 
         end;
         end;
         procedure list.outlist;
         var v:s;
         begin
           v:=t;
           while v<>nil do do
           begin
             writeln(v^.inf);
           end;
         end;
 
      destructor list.done;
      var U:s;
      begin
      u:=t;
      while u<>nil do do
      begin
        U:=u^.next;
        dispose(t);
        t:=u;
 
      end;
      end;
      constructor list.init;
      begin
        inherited init;
 
      end;
      procedure list1.remove(m: Integer);
      var
      u,v:s;
      i:integer;
      begin
     u:=t;
     i:=1;
     if m=1 then
     begin
       t:=t^.next;
       dispose(u);
       exit;
       end
       else
       while (u<>nil)  and i<m do
       begin
       v:=u;
       u:=u^.next;
       i:=i+1;
 
     end;
     if i=m and u<>nil then then
     begin
       v^.next=u^.next;
       dispose(u);
     end;
      end;
 
      destructor list1.done;
      begin
      inherited done;
 
      end;
      constructor table.init(p: Integer);
    i:integer;
      begin
      m:=p;
      inherited init;
      for i=1 to m do
        x[i]:=t ;
 
      end;
      procedure table.add(y: Integer; z: Integer);
      begin
         t:=x[y];
         list.add(z);
         x[y] :=t;
      end;
      procedure table.remove(y: Integer; z: Integer);
      begin
      t:=x[y];
      inherited remove(z)
      end;
      procedure table.outtable;
      var i:integer;
      begin
      for i: := 1 to m do
        begin
          t:=x[i];
          list.outlist;
        end;
      end;
         destructor table.done;
         var i:integer;
         begin
         for i:=1 to m do
           begin
             t:=x[i];
             inherited done;
           end;
 
         end;
         var
         n,j,k,m,i,n1,k1:integer;
         spisok1,spisok2:list;
         spisok3:list1;
         table1:table;
         begin
         readln(n,k);
         j:=1;
         spisok1.init;
         spisok2.init;
         spisok3.init;
         while d<=n do
         begin
           spisok1.add(j);
           spisok2.add(j*j);
           spisok3.add(j*j*j);
           j:=j+1;
         end;
         spisok1.outlist;
         spisok2.outlist;
         spisok3.outlist;
         spisok3.remove(k);
         spisok3.outlist;
         readln;
         writeln('input n<=10');
         readln(n);
         writeln('input m');
         readln(m);
         table1.init(n);
         for i := 1 to n do
             for J := 1 to m do
               table1.add(i),j);
               table1.outtable;
               writeln('input n1,k1');
               readln(n1,k1);
               table1.remove(n1,k1);
               table.outtalbe;
               spisok1.done;
               spisok2.done;
               spisok3.done;
               readln;
 
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2014, 23:43
Ответы с готовыми решениями:

Построить объект-таблица
Здравствуйте! Нужна помощь. Снизу находится задание и с виду оно легкое, но одно НО! Все это...

Создать объект стек и создать объект очередь с перегруженными операциями
Помогите, пожалуйста с заданиями. 1. Унарная операция Создать объект стек, перегрузив ++ и --...

Как создать объект оператором new, если имеется только тип указателя на объект, переданный через шаблон?
Есть шаблон. Точно известно, что его параметр Т это указатель. Как с помощью new создать переменную...

COM-объект Сводная таблица Excel
Доброго времени суток. Вопрос. Не могу разобраться почему не срабатывает код и выдает ошибку в...

8
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
29.03.2014, 01:35 2
List - это будет одна строка со всеми столбцами таблици.
А Spis на первом листе содержит название и тип столбцов таблици этой
0
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
29.03.2014, 14:56  [ТС] 3
Игорь[Igor],
А где-нибудь в интернете можно найти теорию работы с таблицами таким образом, как в данном алгоритме?
Или быть может есть нечто похожее но, более легкое в освоении?
0
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
29.03.2014, 17:42 4
У тебя все в лекцииях написано, перепиши и разбирайся, неполучиться пиши сюда что где непонятно
0
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
29.03.2014, 19:03  [ТС] 5
Игорь[Igor],
В таком случае несколько вопросов:
1)В реализации кода, который на картинках работа идет только с 1 столбцом, и таблица будет иметь такой вид:
[1][inf]
[2][inf]
[3][inf]
и т д ?
Если допустим мне потребуется работать с 4 столбцами, то мне просто в spis их нужно добавить?
2)Обязательно ли объявлять список через Record или можно непосредственно в самом классе его написать и все будет работать так же, если нет то почему?
Пример:
Delphi
1
2
3
4
5
6
7
8
type
     TReg=class
       Private
       FFam,FCity,FOrg:string;
       next:TReg;
    constructor  addnew(fam,city,org:string);
 
end;
0
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
29.03.2014, 19:20 6
В классе то какие поля ты заполняеш в своей таблице, а record это структура полей таблици
0
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
29.03.2014, 19:40  [ТС] 7
Цитата Сообщение от Игорь[Igor] Посмотреть сообщение
А Spis на первом листе содержит название и тип столбцов таблици этой
А в чем прикол массива указателей?
Ведь, как я понимаю для того, что бы переделать данный код под 3 поля,я должен добавить в spis новые поля данных.
Я правильно понимаю, что он является чем-то вроде Head и служит для того, что бы допустим не перебирать все записи, а сразу прыгнуть допустим на 5 запись?

Добавлено через 3 минуты
Цитата Сообщение от Игорь[Igor] Посмотреть сообщение
В классе то какие поля ты заполняеш в своей таблице, а record это структура полей таблици
А если я сделаю, как я сказал, чем не это грозит?
Просто было задание ранее, сделать одноправленный список, и там тоже все в примере через Record было сделано, однако я сделал так, как в том примере, который я тебе приводил и все прекрасно работало.
0
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
29.03.2014, 19:42 8
Посмотри еще темы про очередь
0
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
30.03.2014, 13:24  [ТС] 9
Игорь[Igor],
Мне бы какую-нибудь информацию по этому методу найти в интернете, или похожему методу(Построения таблиц).
Просто допустим в прошлый раз я разбирался с объектами список, и был код страниц на 8, так я погуглил, почитал инфу и сделал код намного меньше и понятнее, и мне все зачли.

Добавлено через 5 часов 22 минуты
Помогите

Добавлено через 11 часов 46 минут
Помогите
0
30.03.2014, 13:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2014, 13:24
Помогаю со студенческими работами здесь

При попытке создать объект obj=Server.CreateObject('Name.ClassName') Возникает ошибка, 'Объект не поддерживает это свойство или метод.'
При попытке создать объект obj=Server.CreateObject('Name.ClassName') Возникает ошибка, 'Объект не...

Создать обЪект класса , у которого в параметрах конструктора объект этого же класса
Вот код: TOgmGraphicsClass = class of TOgmGraphicsBlock; TOgmGraphicsBlock =...

Как из Range поместить данные в массив, если объект таблица excel создается в VB?
Пусть имеем объект таблицу Excel созданную в VB Set xl = CreateObject('excel.sheet') ...

ПодТаблицы с данными(Таблица-Таблица-Таблица-Таблица) и наследованием
Имеется такая база с таблицами Район-МО-Цель-Зачача. Несколько вариантов связей передумал уже, но...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru