![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
iriska_2 |
![]() ![]()
Сообщение
#1
|
Гость ![]() |
у меня проблема никак не могу написать копирующий конструктор для списка списков
Код type ListItem=record nomer,vilet1,vilet2,prilet2,prilet1:integer; mesto,pyt:string[20]; end; pListItem2=^ListItem2; listItem2=record n:plistItem2; l:tpassajir; info:listItem; end; inform=record I,O,F,GR:string[20]; end; paslist=^tpaslist; TpasList=record g_inform:inform; next:pasList; table=class private pstart:pListItem2; colvo:word; head:pasList; fCount:word; public constructor creat(Mytb:table{;var mytb2:Table});overload; помогите, пожалуйста |
iriska_2 |
![]()
Сообщение
#2
|
Гость ![]() |
пыталась написать, но ничего не работает
Код constructor table.creat(mytb:table); var tmp, tmp1,tmp2,pstart2:pListItem2; b,m,il:integer; iy:inform; begin pStart2:=nil; colvo:=mytb.colvo; tmp:=mytb.pstart; // b:=colvo; tmp1:=pstart2; m:=0; for b:=0 to colvo-1 do begin new(tmp1); tmp1^.n:=pstart2; pstart2:=tmp1; tmp:=mytb.get(b+1); tmp1^.info.nomer:=tmp^.info.nomer; tmp1^.info.vilet1:=tmp^.info.vilet1; tmp1^.info.vilet2:=tmp^.info.vilet2; tmp1^.info.prilet2:=tmp^.info.prilet2; tmp1^.info.prilet1:=tmp^.info.prilet1; tmp1^.info.mesto:=tmp^.info.mesto; tmp1^.info.pyt:=tmp^.info.pyt; for m:=0 to tmp^.l.GetLen-1 do begin iy:=tmp^.l.getrec(m); tmp1^.l:=tpassajir.create; tmp1^.l.add(iy.i,iy.O,iy.f,iy.gr); end; tmp:=tmp^.n; end; pstart:=pstart2; end; |
мисс_граффити |
![]()
Сообщение
#3
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Можно чуть подробнее, что ты пытаешься сделать?
Что такое копирующий конструктор? То есть ты ему передаешь объект класса table, а он создает второй такой же? -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Гость |
![]()
Сообщение
#4
|
Гость ![]() |
да,совершенно верно
|
Гость |
![]()
Сообщение
#5
|
Гость ![]() |
когда я вызываю конструкто, который написала, получается, что у обоих классов один начальный
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Я вот тут показывал, что надо делать:
Копирующий конструктор Кстати, приведи свой конструктор (не копирующий, а просто конструктор класса), чтобы можно было проверить работоспособность решения... |
Гость |
![]()
Сообщение
#7
|
Гость ![]() |
когда я вызываю конструктор, который написала, получается, что у обоих классов одна ссылка на начало и когда преобразования делаю в одном классе преобразуется и второй
|
Гость |
![]()
Сообщение
#8
|
Гость ![]() |
обыкновенный конструктор:
Код constructor table.create; begin colvo:=0; pstart:=nil; end; |
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Тогда покажи код создания списка... Почему нам надо все время делать уже сделанное, если ты можешь присоединить это сразу? Весь файл присоединить нельзя?
|
Гость |
![]()
Сообщение
#10
|
Гость ![]() |
Код procedure table.table_addreis(rreis:integer); var q:LIstItem; v1,v2,p1,p2,b,p:integer;r:pListItem2;t:byte; begin t:=0; p:=0; b:=colvo; while b<>0 do begin b:=b-1; q:=mytb.getrec(p); P:=p+1; R:=mytb.get(p); if q.nomer=rreis then begin FORM6.SHOWMODAL; r^.l.tpassajir_add; form6.editF.text:=''; form6.editI.text:=''; form6.editO.text:=''; form6.editGR.text:=''; t:=t+1; end else begin r:=r^.n; end; end; form5.edreis.text:=''; if t<>1 then begin new(r); r^.n:=pstart; pstart:=r; r^.info.nomer:=rreis; colvo:=colvo+1; form3.showmodal; r^.info.vilet1:=strtoint(form3.eviletchas.text); r^.info.vilet2:=strtoint(form3.eviletmin.text); r^.info.prilet1:=strtoint(form3.epriletchas.text); r^.info.prilet2:=strtoint(form3.epriletmin.text); v1:=r^.info.vilet1; v2:=r^.info.vilet2; p1:=r^.info.prilet1; p2:=r^.info.prilet2; r^.info.pyt:=mytb.vrimia(v1,v2,p1,p2); r^.info.mesto:=form3.emesto.text; form3.eviletchas.text:=''; form3.eviletmin.text:=''; form3.epriletchas.text:=''; form3.epriletmin.text:=''; form3.emesto.text:=''; form6.showmodal; R^.l:=tpassajir.create; r^.l.tpassajir_add; form6.editF.text:=''; form6.editI.text:=''; form6.editO.text:=''; form6.editGR.text:=''; end; end; procedure tpassajir.tpassajir_add; var u:paslist; begin new(u); u^.next:=head; head:=u; u^.g_inform.I:=form6.editI.text; u^.g_inform.O:=form6.editO.text; u^.g_inform.F:=form6.editF.text; u^.g_inform.gr:=form6.editGR.text; fcount:=fcount+1; end; |
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 14:54 |