Помощь - Поиск - Пользователи - Календарь
Полная версия: Линейные списки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
ladybird
Здравствуйте. Помогите исправить ошибки, пожалуйста.

Задача:
1 Сформировать список с полями Улица,№дома,№квартира,кол-во жильцов и вывести на экран в виде таблицы.
2. Найти и вывести на экран кол-во жильцов по заданному пользователем адресу.
3. Отсортировать по кол-ву жильцов.
4. Сформировать новый список не включающий поля "улица".
5. Вывести новый список на экран в виде таблицы.

Заминка вышла в сортировке, у меня сортирует кол-во жильцов, а не по количеству. И при формировании нового списка я извлекаю инф из первого элемента и освобождаю его память, а на экран выводится только второй адрес(из двух) без поля "улица".

Помогите, если не трудно)))

Вот код:

program spisok;
uses crt;
type
 sp=^adres;
 adres=record
   street:string;
   dom,kv,zilci:integer;
   link:sp;
 end;
 sp1=^adres1;
 adres1=record
   street:string;
   dom,kv,zilci:integer;
   link:sp1;
   end;
var
 begp,endp,pp:sp;
 begp1,endp1:sp1;
 i,j:integer;
 nm:byte;
 v:boolean;

 Procedure vvod(var begp,endp:sp);
 var pp:sp;
 begin
  Writeln('vvedite kolichestvo zap');
 readln(nm);
  for i:=1 to nm do
  begin
  new(pp);
  write('street    ');
  readln(pp^.street);
  write('# doma    ');
  readln(pp^.dom);
  write('# kvartiri    ');
  readln(pp^.kv);
  write('kol-vo zilcov    ');
  readln(pp^.zilci);
  pp^.link:=nil;
  if begp=nil
   then begp:=pp
     else endp^.link:=pp;
       endp:=pp;
  end;
 end;

  procedure vivod(begp,endp:sp);
 var pp:sp;
 begin
  clrscr;
  write('--------------------------------------------------');
  writeln;
  write('|   street   |  #doma  |  #kv  |  kol-vo zilcov   |');
    for i:=1 to nm do
  pp:=begp;
  while pp<>nil do
    begin
    writeln;
    write(pp^.street:12,' ');
    write(pp^.dom:6, '  ' ,pp^.kv:9, ' ', pp^.zilci:8, ' ');
    writeln;
    pp:=pp^.link;
    end;
     write('---------------------------------------------------');
     writeln;
   end;

 procedure poisk(var begp1,endp1:sp1;begp,endp:sp);
 var
 pp:sp;
 pp1:sp1;
  begin
  writeln('Vvedite street, dom, kv cheres enter');
  begin
   readln(pp1^.street);
   readln(pp1^.dom);
   readln(pp1^.kv);
   pp:=begp;
  while pp<>nil do
     begin
   if ((pp1^.street=pp^.street) and (pp1^.dom=pp^.dom)) and (pp1^.kv=pp^.kv)
      then
       begin
        write('Kol-vo zilcov: ');
        write(pp^.zilci);
        writeln;
        v:=true;
       end;
    if v=false then
      writeln('takogo adresa ne naideno');
     pp:=pp^.link;
    end;
    end;
    end;

 procedure sort(begp,endp:sp);
 var
 pp,p1,pt:sp;
 t,r,g:integer;
 k:string;
 begin
 for i:=1 to nm do
 pp:=begp;
 while pp<>endp do
 begin
 t:=pp^.zilci;
 pt:=pp;
 p1:=pp;
 while p1^.link<>nil do
 begin
 p1:=p1^.link;
 if p1^.zilci<=pp^.zilci then
  begin
 t:=p1^.zilci;
  pt:=p1;
  end;
  end;
 pt^.zilci:=pp^.zilci;
 pp^.zilci:=t;
 pp:=pp^.link;
 end;
 end;

  procedure vivodsort(begp,endp:sp);
 var pp:sp;
 begin
  write('--------------------------------------------------');
  writeln;
  write('|   street   |  #doma  |  #kv  |  kol-vo zilcov   |');
    for i:=1 to nm do
  pp:=begp;
  while pp<>nil do
    begin
    writeln;
    write(pp^.street:12,' ');
    write(pp^.dom:6, '  ' ,pp^.kv:9, ' ', pp^.zilci:8, ' ');
    writeln;
    pp:=pp^.link;
    end;
     write('---------------------------------------------------');
     writeln;
   end;


 Procedure novmas(var begp,endp:sp);
 var
 x:string;
 pp:sp;
 begin
 for i:=1 to nm do
 x:=begp^.street;
 pp:=begp;
 begp:=pp^.link;
 dispose(pp);
 end;
  {Procedure novmas(var begp,endp:sp);
 var
 pp:sp;
 pp1:sp1;
 begin
 for i:=1to nm do
 new(pp1);
 pp1^.dom:=pp^.dom;
 pp1^.kv:=pp^.kv;
 pp1^.zilci:=pp^.zilci;
 pp1^.link:=nil;
 begp1:=pp1;
 endp1:=pp1;
 end;               }

 Procedure novmasa(begp,endp:sp);
 var pp:sp;
 begin
  write('-------------------------------------');
  writeln;
  write('| #doma  |    #kv   | kol-vo zilcov  |');
    pp:=begp;
    while pp<>nil do
     begin
      writeln;
      write(pp^.dom:6, ' ' ,pp^.kv:8, ' ',pp^.zilci:8, ' ');
      writeln;
      pp:=pp^.link;
     end;
   write('-------------------------------------');
   writeln;
   readln;
  end;

 begin
 clrscr;
 begp:=nil;
 endp:=nil;
 vvod(begp,endp);
 vivod(begp,endp);
 poisk(begp1,endp1,begp,endp);
 sort(begp,endp);
 writeln('ots spisok');
 vivodsort(begp,endp);
 novmas(begp,endp);
 novmasa(begp,endp);
 readln;
 end.

volvo
Цитата
Заминка вышла в сортировке, у меня сортирует кол-во жильцов, а не по количеству.
Естественно, ты же вот тут:
Цитата
if p1^.zilci<=pp^.zilci then
begin
  t:=p1^.zilci;
  pt:=p1;
end;
это и просишь сделать у компилятора. Запоминаешь только количество жильцов, а потом меняешь только количество с тем же полем другой записи. Вообще-то обычно делается так:

 AddrRec = record
   street:string;
   dom,kv,zilci:integer;
 end;

 sp=^adres;
 adres=record
   Data: AddrRec;
   link:sp;
 end;
, то есть, данные отделяются от вспомогательных полей, необходимых для организации списка. поле link никак с твоими данными не связано, оно нужно только для того, чтобы перейти к следующей записи, поэтому его от информационной части надо отделить... А потом уже запоминать не количество жильцов, а всё поле Data.

Или посмотреть вот этот пост: сортировка списка простыми вставками , тогда можно обойтись без разделения структуры adres.
ladybird
Спасибо за подсказку,но когда я делаю через "сортировку списка простыми вставками" мне выдает ошибку, что не хватает end, когда я его ставлю, ему не хватает begin....помню, что мне когда-то попадалась эта ошибка, но не помню, что в этом случае надо делать....подскажите, а?
И как мне быть с тем, что при формировании нового списка я извлекаю инф из первого элемента и освобождаю его память, а на экран выводится только второй адрес(из двух) без поля "улица"?
Lapp
Цитата(ladybird @ 18.11.2009 23:13) *
выдает ошибку, что не хватает end, когда я его ставлю, ему не хватает begin....помню, что мне когда-то попадалась эта ошибка, но не помню, что в этом случае надо делать....
Что ж, бывает - забывается.. Напоминаю, что в этом случае надо делать: нужно привести тут полный код программы. Вредная ошибка не продержится и часа, уверяю тебя smile.gif.
ladybird
Вот:
program spisok;
uses crt;
type
 sp=^adres;
 adres=record
   street:string;
   dom,kv,zilci:integer;
   link:sp;
   end;

 sp1=^adres1;
 adres1=record
   street:string;
   dom,kv,zilci:integer;
   link:sp1;
   end;
var
 begp,endp,pp:sp;
 begp1,endp1:sp1;
 i,j:integer;
 nm:byte;
 v:boolean;
  first:sp;

 Procedure vvod(var begp,endp:sp);
 var pp:sp;
 begin
  Writeln('vvedite kolichestvo zap');
 readln(nm);
  for i:=1 to nm do
  begin
  new(pp);
  write('street    ');
  readln(pp^.street);
  write('# doma    ');
  readln(pp^.dom);
  write('# kvartiri    ');
  readln(pp^.kv);
  write('kol-vo zilcov    ');
  readln(pp^.zilci);
  pp^.link:=nil;
  if begp=nil
   then begp:=pp
     else endp^.link:=pp;
       endp:=pp;
  end;
 end;

  procedure vivod(begp,endp:sp);
 var pp:sp;
 begin
  clrscr;
  write('--------------------------------------------------');
  writeln;
  write('|   street   |  #doma  |  #kv  |  kol-vo zilcov   |');
    for i:=1 to nm do
  pp:=begp;
  while pp<>nil do
    begin
    writeln;
    write(pp^.street:12,' ');
    write(pp^.dom:6, '  ' ,pp^.kv:9, ' ', pp^.zilci:8, ' ');
    writeln;
    pp:=pp^.link;
    end;
     write('---------------------------------------------------');
     writeln;
   end;

 procedure poisk(var begp1,endp1:sp1;begp,endp:sp);
 var
 pp:sp;
 pp1:sp1;
  begin
  writeln('Vvedite street, dom, kv cheres enter');
  begin
   readln(pp1^.street);
   readln(pp1^.dom);
   readln(pp1^.kv);
   pp:=begp;
  while pp<>nil do
     begin
   if ((pp1^.street=pp^.street) and (pp1^.dom=pp^.dom)) and (pp1^.kv=pp^.kv)
      then
       begin
        write('Kol-vo zilcov: ');
        write(pp^.zilci);
        writeln;
        v:=true;
       end;
    if v=false then
      writeln('takogo adresa ne naideno');
     pp:=pp^.link;
    end;
    end;
    end;
 function insert_sort(p1:sp):sp;

  function insert(pp:sp;p1:sp):sp;
   begin
   pp^.link:=Nil;
   if p1=nil then insert:=pp
   else
   if ((pp^.street<p1^.street) and (pp^.dom<p1^.dom))
    and ((pp^.kv<p1^.kv)and(pp^.zilci<p1^.zilci)) then
     begin
     pp^.link:=p1;
     insert:=pp;
     end
     else
     begin
     p1^.link:=insert(pp,p1^.link);
     insert:=p1;
     end;
    end;

 Procedure novmas(var begp,endp:sp);
 var
 x:string;
 pp:sp;
 begin
 for i:=1 to nm do
 x:=begp^.street;
 pp:=begp;
 begp:=pp^.link;
 dispose(pp);
 end;

 Procedure novmasa(begp,endp:sp);
 var pp:sp;
 begin
  write('-------------------------------------');
  writeln;
  write('| #doma  |    #kv   | kol-vo zilcov  |');
    pp:=begp;
    while pp<>nil do
     begin
      writeln;
      write(pp^.dom:6, ' ' ,pp^.kv:8, ' ',pp^.zilci:8, ' ');
      writeln;
      pp:=pp^.link;
     end;
   write('-------------------------------------');
   writeln;
   readln;
  end;

 begin
 clrscr;
 begp:=nil;
 endp:=nil;
 vvod(begp,endp);
 vivod(begp,endp);
 poisk(begp1,endp1,begp,endp);
 writeln('ots spisok');
 if p1=nil then insert_sort:=nil
 else insert_sort:=insert(p1,insert_sort(p1^.link));
 novmas(begp,endp);
 novmasa(begp,endp);
 readln;
 end.

volvo
В функции insert_sort должна быть вложенная функция, называется Insert. Она у тебя есть, НО тела самой функции insert_sort -то у тебя и нет (по ссылке - это вот этот кусок:
Цитата
begin
  if l = nil then insert_sort := nil
  else insert_sort := insert(l, insert_sort(l^.next));
end;
). В итоге компилятор думает, что ВСЕ функции, которые описаны ниже insert_sort являются вложенными в нее. Твою ОСНОВНУЮ часть программы он считает наконец-то описанием тела функции insert_sort, и естественно потом требует еще точку с запятой, и главный блок
begin 
  { ... }
end.
Добавь эти 2 строки (которые я процитировал) куда положено, и все откомпилируется.
Lapp
Цитата(ladybird @ 19.11.2009 11:33) *
Вот:
Втовоем "вот" "смешались в кучу кони, люди", как сказал поэт )).

Вот так она по крайней мере компилится smile.gif:
program spisok;
uses crt;
type
  sp=^adres;
  adres=record
    street:string;
    dom,kv,zilci:integer;
    link:sp;
  end;

  sp1=^adres1;
  adres1=record
    street:string;
    dom,kv,zilci:integer;
    link:sp1;
  end;

var
  begp,endp,pp:sp;
  begp1,endp1:sp1;
  i,j:integer;
  nm:byte;
  v:boolean;
  first:sp;

Procedure vvod(var begp,endp:sp);
var
  pp:sp;
begin
  Writeln('vvedite kolichestvo zap');
  readln(nm);
  for i:=1 to nm do begin
    new(pp);
    write('street    ');
    readln(pp^.street);
    write('# doma    ');
    readln(pp^.dom);
    write('# kvartiri    ');
    readln(pp^.kv);
    write('kol-vo zilcov    ');
    readln(pp^.zilci);
    pp^.link:=nil;
    if begp=nil then begp:=pp else endp^.link:=pp;
    endp:=pp;
  end;
end;


procedure vivod(begp,endp:sp);
var
  pp:sp;
begin
  clrscr;
  write('--------------------------------------------------');
  writeln;
  write('|   street   |  #doma  |  #kv  |  kol-vo zilcov   |');
  for i:=1 to nm do pp:=begp;
  while pp<>nil do begin
    writeln;
    write(pp^.street:12,' ');
    write(pp^.dom:6, '  ' ,pp^.kv:9, ' ', pp^.zilci:8, ' ');
    writeln;
    pp:=pp^.link;
  end;
  write('---------------------------------------------------');
  writeln;
end;


procedure poisk(var begp1,endp1:sp1;begp,endp:sp);
var
  pp:sp;
  pp1:sp1;
begin
  writeln('Vvedite street, dom, kv cheres enter');
  begin
  readln(pp1^.street);
  readln(pp1^.dom);
  readln(pp1^.kv);
  pp:=begp;
  while pp<>nil do begin
    if ((pp1^.street=pp^.street) and (pp1^.dom=pp^.dom)) and (pp1^.kv=pp^.kv)
      then begin
        write('Kol-vo zilcov: ');
        write(pp^.zilci);
        writeln;
        v:=true;
      end;
    if v=false then writeln('takogo adresa ne naideno');
    pp:=pp^.link;
    end;
  end;
end;


function insert_sort(p1:sp):sp;

  function insert(pp:sp;p1:sp):sp;
   begin
   pp^.link:=Nil;
   if p1=nil then insert:=pp
   else
   if ((pp^.street<p1^.street) and (pp^.dom<p1^.dom))
    and ((pp^.kv<p1^.kv)and(pp^.zilci<p1^.zilci)) then
     begin
     pp^.link:=p1;
     insert:=pp;
     end
     else
     begin
     p1^.link:=insert(pp,p1^.link);
     insert:=p1;
     end;
    end;

begin   {это тело функции insert_sort}
  if p1=nil then insert_sort:=nil
  else insert_sort:=insert(p1,insert_sort(p1^.link));
end;


Procedure novmas(var begp,endp:sp);
var
  x:string;
  pp:sp;
begin
  for i:=1 to nm do
  x:=begp^.street;
  pp:=begp;
  begp:=pp^.link;
  dispose(pp);
end;


Procedure novmasa(begp,endp:sp);
var
  pp:sp;
begin
  write('-------------------------------------');
  writeln;
  write('| #doma  |    #kv   | kol-vo zilcov  |');
    pp:=begp;
    while pp<>nil do
     begin
      writeln;
      write(pp^.dom:6, ' ' ,pp^.kv:8, ' ',pp^.zilci:8, ' ');
      writeln;
      pp:=pp^.link;
     end;
  write('-------------------------------------');
  writeln;
  readln;
end;


begin
  clrscr;
  begp:=nil;
  endp:=nil;
  vvod(begp,endp);
  vivod(begp,endp);
  poisk(begp1,endp1,begp,endp);
  writeln('ots spisok');
  novmas(begp,endp);
  novmasa(begp,endp);
  readln;
end.




Добавлено через 48 сек.
sorry, volvo
ladybird
Спасибо, я исправила эту ошибку, но на экран мне сортировку так и не выводит)
volvo
Цитата
Спасибо, я исправила эту ошибку
Можешь показать только ОСНОВНУЮ часть программы (не надо сами процедуры, только там, где вызов vvod/vivod/poisk и insert_sort)? Есть подозрение, что ты неправильно вызываешь сортировку.
ladybird
Так оно и есть)) я про вызов то и забыла)) Как ее правильно вызвать? я чего-то недопонимаю. Если ставлю writeln(insert_sort), то выдает ошибку. Не ругайтесь сильно на мою неосведомленность, но я всегда функции обходила стороной и работала только с процедурами, вот теперь зависла....
volvo
Если сделать так:
begin
  begp:=nil;
  endp:=nil;
  vvod(begp,endp);
  vivod(begp,endp);
  writeln('ots spisok');
  begp := insert_sort(begp);
  vivod(begp,endp); { <--- Внимательнее здесь !!! }
  readln;
end.
, то все должно отсортироваться. Почему внимательнее - потому что endp уже может указывать не на последний элемент списка. Я бы вообще обошелся в процедуре печати вообще одним параметром, второй все равно не используется.
Lapp
Цитата(ladybird @ 19.11.2009 13:14) *
если ставлю writeln(insert_sort), то выдает ошибку.

Конечно ошибка будет. WriteLn умеет работать только со стандартными типами, и то не со всеми. Что, ты полагаешь, она должна сделать?.. blink.gif
Но у тебя есть специальная процедура для вывода. Она, вроде, берет как раз тип sp. Вот, ее и используй, наверное )).


Добавлено через 1 мин.
опять ))
извини, volvo lol.gif
volvo
Хм... Да процедуру vivod вообще надо переписывать, там что, для надежности несколько раз делается:
  write('|   street   |  #doma  |  #kv  |  kol-vo zilcov   |');
  for i:=1 to nm do pp:=begp; { <--- Вот это }
? Если сделать присвоение один раз, поверь, процедура работать хуже не станет. Да и доп. переменная pp вообще не нужна. Передавай только указатель на начало списка, и работай с ним. Он же передается без Var, по значению, а значит в вызывающей программе не изменится его значение. Не надо лишних переменных. Чем их меньше - тем лучше.

Цитата
опять ))
извини, volvo
Да ничего smile.gif Я тут только теоретически, Паскаля нет на машине, так что надо бы еще проверить, БУДЕТ ли оно работать. Должно-то должно, но мало ли...
ladybird
А как мне быть с тем, что при вводе , например, трех адресов, сортируются только 1й и последний между собой?
volvo
Значит, все-же что-то неправильно исправила. Присоединяй файл с полной программой.
ladybird
Вот:
volvo
Хм... А у тебя poisk вообще работает? Не должен, насколько я вижу:
Цитата
procedure poisk(var begp1,endp1:sp1;begp,endp:sp);
 var
 pp:sp;
 pp1:sp1;
  begin
  writeln('Vvedite street, dom, kv cheres enter');
  begin
   readln(pp1^.street); { <--- Ну, и чему здесь равно pp1? Куда ты записываешь данные? }
   readln(pp1^.dom);
   readln(pp1^.kv);
   pp:=begp;

Контроль ошибок времени выполнения включен (Options -> Compiler -> Runtime Errors)? Хотя в Турбо Паскале может и не сработать, все же не обязательно pp1 будет nil, то есть просто испортится какое-то значение в памяти и все.
ladybird
Цитата
Хм... А у тебя poisk вообще работает?


Не знаю, но работает...кол-во жильцов выводит правильно, но потом еще добавляет, что "такого адреса не найдено".
volvo
Итак... Я наконец добрался до Паскаля. Берем твою программу и делаем небольшую ревизию. Смотри. Сначала убираем типы - дубликаты. Как adres/adres1 и sp/sp1. Второе - все переменные, описанные в самом начале программы, переносим, их описание будет перед началом основного блока программы. Это позволит от большей части из них (почти ото всех) избавиться. Подробнее - см. здесь: Как не надо писать программы (пункт 3, но вообще прочитай всю тему, это не помешает). Итого, после всех изменений, имеем:

program spisok;
type
  sp=^adres;
  adres=record
    street:string;
    dom,kv,zilci:integer;
    link:sp;
  end;

{ Процедура принимает и возвращает только начало списка }
procedure vvod(var begp: sp);
var
  pp, endp: sp;
  i, nm: integer;
begin
  endp := nil; { <--- Это уже локальная переменная }

  write('vvedite kolichestvo zap: '); readln(nm);
  for i:=1 to nm do
  begin
    new(pp);
    write('street    '); readln(pp^.street);
    write('# doma    '); readln(pp^.dom);
    write('# kvartiri    '); readln(pp^.kv);
    write('kol-vo zilcov    '); readln(pp^.zilci);

    pp^.link:=nil;
    if begp=nil then begp:=pp
    else endp^.link:=pp;

    endp:=pp;
  end;
end;

{ Для вывода тоже достаточно только начала списка }
procedure vivod(begp: sp);
begin
  write('--------------------------------------------------');
  writeln;
  write('|   street   |  #doma  |  #kv  |  kol-vo zilcov   |');
    
  while begp <> nil do { работаем прямо с begp, ничего с ней не случится }
  begin
    writeln;
    with begp^ do
      writeln(street:12, dom:6, kv:9, zilci:8);
    begp := begp^.link; { <--- Продвигаемся по списку }
  end;
  write('---------------------------------------------------');
  writeln;
end;

{ Поиск... Странно, но здесь тоже надо только указатель на начало }
procedure poisk(begp: sp);
var
  pp, pp1:sp;
  v: boolean; { <--- V используется только здесь? Вот и описываем локально }
begin
  v := false; { Инициализируем переменную обязательно }
  writeln('Vvedite street, dom, kv cheres enter');

  new(pp1); { Выделяем память для хранения данных, которые будем искать }
  readln(pp1^.street);
  readln(pp1^.dom);
  readln(pp1^.kv);

  pp:=begp; { С начала списка ... }
  while pp<>nil do { ... до его конца ... }
  begin
    if ((pp1^.street=pp^.street) and (pp1^.dom=pp^.dom)) and (pp1^.kv=pp^.kv) then
    begin
      write('Kol-vo zilcov: ');
      write(pp^.zilci);
      writeln;
      v:=true;
    end;

    pp:=pp^.link; { ... продвигаемся }
  end;

  { И только теперь можем сказать, была ли найдена запись }
  if not v then
    writeln('takogo adresa ne naideno');

  dispose(pp1); { Освобождаем место, где хранились данные для поиска }
end;

function insert_sort(p1:sp):sp;

  function insert(pp:sp;p1:sp):sp;
  begin
    pp^.link:=Nil;
    if p1=nil then insert:=pp
    else
      if pp^.zilci < p1^.zilci then { чтобы отсортировать по количеству жильцов }
      begin
        pp^.link:=p1;
        insert:=pp;
      end
      else
      begin
        p1^.link:=insert(pp,p1^.link);
        insert:=p1;
      end;
  end;

begin
  if p1=nil then insert_sort:=nil
  else insert_sort:=insert(p1,insert_sort(p1^.link));
end;

var
 begp: sp;
  
begin
  begp:=nil;
  vvod(begp);
  vivod(begp);
  poisk(begp);
  
  writeln('ots spisok');
  begp := insert_sort(begp);
  vivod(begp);
  
  readln;
end.
Запускаем программу, она выдает вот такой результат:
Running "f:\programs\pascal\ladybird.exe"
vvedite kolichestvo zap: 3
street s1
# doma 32
# kvartiri 43
kol-vo zilcov 15
street s2
# doma 23
# kvartiri 65
kol-vo zilcov 7
street s3
# doma 43
# kvartiri 44
kol-vo zilcov 9
--------------------------------------------------
| street | #doma | #kv | kol-vo zilcov |
s1 32 43 15

s2 23 65 7

s3 43 44 9
---------------------------------------------------
Vvedite street, dom, kv cheres enter
s4
22
33
takogo adresa ne naideno
ots spisok
--------------------------------------------------
| street | #doma | #kv | kol-vo zilcov |
s2 23 65 7

s3 43 44 9

s1 32 43 15
---------------------------------------------------

Вроде все по заданию (пункты 1-3)...

Ах да, новый список, не включающий поля "улица" - это как? Физически не включающий, или просто не отображать это поле? Делается тоже достаточно просто, попробуй, если не получится - поможем.
ladybird
Физически не включающий, если просто не отображать, тогда все элементарно.
Но я уже сама над этим подумаю.

Огромное СПАСИБО за помощь smile.gif .
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.