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

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Создание 2-х новых списков из элементов данного
MRK
сообщение 9.11.2005 23:37
Сообщение #1


Гость






Требуется описать процедуру, которая по списку L строит два новых списка:
L1- из положительных элементов и L2-изостальных элементов списка L
(Т.э.=real). 10 раз перечитал FAQ, но всё равно запутался и никак не могу разобраться. Застрял при написании процедуры 'vibor'. Хотя, наверное, лучше выбор сделать в самой программе, а не в процедуре. Помогите плииз. mega_chok.gif

program spiski;
uses crt;
type tinf=real; tp=^tel;
     tel=record
          inf:tinf;
          psled:tp;
         end;
var head:tp; m:real; otvet2:char; pe:tp;
{------------------------------------------}
procedure vsp(var iel:tinf; var head:tp);  {создание списка L}
var pe:tp; otvet:char;
  begin
    writeln ('Vedite elementi spiska L');
    writeln('Dlya zaversheniya vvoda nazmite "E"');
    repeat
     read(m);
     new(pe);
     pe^.inf:=iel;
     pe^.psled:=head;
     head:=pe;
     otvet:=readkey;
    until otvet='e';
  end;
{------------------------------------------}
procedure print(head1:tp);     {вывод  списка}
var pk:tp;
  begin
    writeln('Spisok');
    pk:=head;
    while pk<>nil do
      begin
        write(pk^.inf:5:2,' | ');
        pk:=pk^.psled
      end;
    writeln
  end;
{------------------------------------------}
procedure vibor(iel1:tinf;head2:tp);   {выбор из L и создание L1 и L2}
var pl1:tp; k:real;
  begin
    pl1:=head2;
    while pl1<>nil do
      begin
        if pl1^.inf>0 then
          new(pl1);
          pl1^.inf:=iel1;
          k:=iel1;
          pl1^.psled:=head2;
          head2:=pl1;
      end;
    writeln
  end;
{------------------------------------------}
begin
  repeat
  clrscr;
  vsp(m,head);
  print(head);
  vibor(head2);
  writeln ('Dlya vihoda iz programmi nazmite " Y "');
  otvet2:=readkey
  until otvet2='y';
end. 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 

- Текстовая версия 28.07.2025 9:47
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"