IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> копирующий конструктор, для списка списков
сообщение
Сообщение #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;

помогите, пожалуйста
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Можно чуть подробнее, что ты пытаешься сделать?
Что такое копирующий конструктор?
То есть ты ему передаешь объект класса table, а он создает второй такой же?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






да,совершенно верно
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






когда я вызываю конструкто, который написала, получается, что у обоих классов один начальный
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Я вот тут показывал, что надо делать:
Копирующий конструктор

Кстати, приведи свой конструктор (не копирующий, а просто конструктор класса), чтобы можно было проверить работоспособность решения...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






когда я вызываю конструктор, который написала, получается, что у обоих классов одна ссылка на начало и когда преобразования делаю в одном классе преобразуется и второй
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






обыкновенный конструктор:
Код

constructor table.create;
begin
  colvo:=0;
  pstart:=nil;
end;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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;


 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 21.09.2020 19:37
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name