Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2009, 14:20   #1
Cooller51190
Новичок
Джуниор
 
Регистрация: 12.12.2009
Сообщений: 5
По умолчанию У меня возникла проблема с решением задачи на паскал по теме линейные списки

необходимо Составить программу, которая удаляет из списка L за каждым вхождением элемента E один элемент, если таковой имеется, и он отличен от L. как мне реализовать это помогите пожайлуста
Cooller51190 вне форума Ответить с цитированием
Старый 12.12.2009, 14:42   #2
Cooller51190
Новичок
Джуниор
 
Регистрация: 12.12.2009
Сообщений: 5
По умолчанию

Код:
program formirovanie_imen_spiska;

uses crt;

const
   n=5;

type
   pt = ^elem;
      elem = record
      data:string;
      next:pt;
      end;

var
   first:pt;
   o:string;

procedure ins_start(var first:pt);
   var
      t:pt;
      i:integer;
      x:string;
   begin
      for i:=1 to n do begin
         New(t);
         Writeln('Vvedite ',i,' familiu spiska');
         Readln(x);
         WriteLn;
         t^.data:=x;
         t^.next:=first;
         first:=t;
         end;
      end;

procedure print(var first:pt);
   var
      t:pt;
   begin
      t:=first;
      repeat
         write(t^.data,'  ');
         t:=t^.next;
         until t=nil;
      end;

begin
   clrscr;
   first:=nil;
   ins_start(first);
   print(first);
  writeln;
   Writeln('Vvedite ');
    readln;
   end.
Это код для создания списка. Как а вот как удалить 1 элемент списка после которого я введу?

Последний раз редактировалось Cooller51190; 12.12.2009 в 14:45.
Cooller51190 вне форума Ответить с цитированием
Старый 12.12.2009, 18:15   #3
Cooller51190
Новичок
Джуниор
 
Регистрация: 12.12.2009
Сообщений: 5
По умолчанию

ауууу помогите кто нибуть
Cooller51190 вне форума Ответить с цитированием
Старый 13.12.2009, 01:52   #4
Cooller51190
Новичок
Джуниор
 
Регистрация: 12.12.2009
Сообщений: 5
По умолчанию

мне надо ток помощь в одной процедуре удаления, решение половины итак есть.....
Cooller51190 вне форума Ответить с цитированием
Старый 13.12.2009, 03:54   #5
Nowar
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 23
По умолчанию

Это такая формулировка задачи была?
Цитата:
Составить программу, которая удаляет из списка L за каждым вхождением элемента E один элемент, если таковой имеется, и он отличен от L.
При чём тут тогда
Цитата:
Writeln('Vvedite ',i,' familiu spiska');
? Какую такую фамилию списка просит ввести программа? Что значит, отличен от L? Что это вообще за список? Или, может, это меня ночью глючит?...
Можете точную формулировку задачи написать?
Nowar вне форума Ответить с цитированием
Старый 13.12.2009, 11:02   #6
Cooller51190
Новичок
Джуниор
 
Регистрация: 12.12.2009
Сообщений: 5
По умолчанию

по поводу формулировки это именно такая и есть в задаче..... а проще могу объеснить так... дан список элементов точнее эти элементы вводятся вручную собственно оттуда и есть Writeln('Vvedite ',i,' familiu spiska'); после необходимо ввести также с клавиатуры элемент который есть уже в этом списке и после которого необходимо удалить 1 элемент вот...
Cooller51190 вне форума Ответить с цитированием
Старый 13.12.2009, 12:14   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Cooller51190, Вам о другом говорят. Вы бы сделали заполнение списка (хотя бы константами, прямо в теле программы.
Потом организуйте ввод элемента, после которого надо удалить...

Цитата:
которая удаляет из списка L за каждым вхождением элемента E один элемент, если таковой имеется, и он отличен от L.
а задание Вы либо неправильно цитируете, либо неверно истолковываете...
Во-первых, удалять надо не один элемент, а КАЖДЫЙ, а во-вторых, что означает "отличен от L" ?! Что такое L?
Мне кажется надо читать так:
Ввести элемент E и удалить из списка L за каждым вхождением элемента E один элемент, если таковой имеется, и он отличен от E.


p.s. А вот собственно удалить элемент в списке, уж поверьте мне, сделать совсем несложно...

Последний раз редактировалось Serge_Bliznykov; 13.12.2009 в 12:20.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.12.2009, 20:02   #8
Nowar
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 23
По умолчанию

Код:
program test;

type
pt = ^elem;
      elem = record
      data:string;
      next:pt;
      end;

procedure addItem(var list: pt; item: string);
begin
  if list=nil then begin
    new(list);
    list^.next:=nil;
    list^.data:=item;
  end else begin
    addItem(list^.next,item);
  end;
end;

procedure deleteElement(var list: pt; item : string);
var
  tmp: pt;
begin
  if list<>nil then begin
    if list^.next<>nil then begin
      if (list^.data=item) and (list^.next^.data<>item) then begin
        list^.next^.data:='';
        tmp:=list^.next^.next;
        dispose(list^.next);
        list^.next:=tmp;
      end;
      deleteElement(list^.next,item);
    end;
  end;
end;

procedure printList(list: pt);
begin
  if list<>nil then begin
    WriteLn(list^.data);
    printList(list^.next);
  end;
end;

procedure freeMemory(var list: pt);
begin
  if list<>nil then begin
    freeMemory(list^.next);
    list^.data:='';
    dispose(list);
    list:=nil;
  end;
end;

var
  E: string;
  element: string;
  spisok: pt;
begin
  spisok:=nil;
  Write('E=');
  ReadLn(E);
  WriteLn('Vvodite elementi spiska, pustaya stroka - okonchanie vvoda');
  repeat
    readln(element);
    addItem(spisok,element);
  until element='';
  deleteElement(spisok,E);
  WriteLn('');
  printList(spisok);
  freeMemory(spisok);
  readln;
end.
Nowar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задачи по теме "Линейные алгоритмы" на Delphi 7 matrix8325 Помощь студентам 2 20.04.2009 22:53
Проблема с решением задачи на Borland C ONiX Помощь студентам 4 28.02.2009 03:16
У меня возникла небольшая проблемка с определением последнего активного окна. hoza_syl Помощь студентам 6 23.05.2008 17:03
Возникает проблема с решением задачи. profi Помощь студентам 2 30.11.2007 01:11