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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2009, 16:16   #1
Saawa
 
Регистрация: 02.12.2009
Сообщений: 4
По умолчанию Паскаль. Динамические списки

Тема 12. Динамические структуры данных. Списки.
С клавиатуры вводится последовательность символов. Исключить символы, повторяющиеся бо-лее 2-х раз. Исключить из последовательности символ с заданным номером.
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

Type pe=^element;
        element=record
             ch:char;
             pp:pe;
             pn:pe;
        end;
    var phead,ptail,first,pa,pb,q,w,y,b:pe; n:char; key:boolean;
    k,i:integer;
    a:array[1..100] of char;
begin
first:=nil;
phead:=nil;
ptail:=nil;

  Writeln('vvedite slovo');
writeln('" "-konec vvoda');
i:=0;
repeat
i:=i+1;
read(n);
a[i]:=n;

until a[i]=' ' ;

new(first);
first^.ch:=a[1];
first^.pp:=nil;
first^.pn:=nil;
ptail:=first;
phead:=first;
k:=2;
repeat

new(q);
ptail^.pn:=q;
q^.ch:=a[k];
q^.pp:=ptail;
q^.pn:=nil;
ptail:=q;
k:=k+1;
until i=k;
   readln;
    write(ptail^.ch);
    q:=ptail^.pp;
    repeat
      write(q^.ch);
      if q^.ch='a' then
      begin
       y:=q;
       b:=q^.pn;
       y^.pn:=b^.pn;
       b^.pp:=y;
       dispose(b);
      end;
      q:=q^.pp;
    until q^.pp=nil;
    write(first^.ch);
    readln;
end.
P.s. НЕ удоляет почему то ... и вообще не могу понять как их тут сортировать что бы удолялись больше 2-ух, помогите пли3
Saawa вне форума Ответить с цитированием
Старый 07.12.2009, 19:59   #2
Saawa
 
Регистрация: 02.12.2009
Сообщений: 4
По умолчанию

Програама работает, на ввод и вывод данный, на сорировку к сожелению нет
Saawa вне форума Ответить с цитированием
Старый 07.12.2009, 22:40   #3
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Немного переделал.
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type pe=^element;
element=record
    ch: char;
    nextrec: pe;
    prevrec: pe;
end;
var first, current, last, tmp, b, forDel: pe;
    i: integer;
    c: char;
    s: string;
BEGIN
  write('Slovo: '); readln(s);
  last:=new(pe);
  first:=last;
  for i := 1 to length(s) do begin
    current := last;
    last^.ch := s[i];
    last^.nextrec:=new(pe);
    last := last^.nextrec;
    last^.prevrec := current
  end;

  current := first;
  while current <> last do begin
    tmp := current^.nextrec;
    while tmp <> last do begin
      if tmp^.ch = current^.ch then begin
        forDel := tmp;
        b := tmp^.prevrec;
        b^.nextrec := tmp^.nextrec;
        tmp := tmp^.nextrec;
        tmp^.prevrec := b;
        dispose(forDel);
        continue
      end;
      tmp := tmp^.nextrec;
    end;
    current := current^.nextrec;
  end;

  current:=first;
  while current<>last do begin
    write(' ',current^.ch);
    current:=current^.nextrec;
  end;
  readln
END.
Исключить из последовательности символ с заданным номером можно аналогичными действиями (просто немного упростить задачу)

Последний раз редактировалось eoln; 07.12.2009 в 23:16. Причина: tmp^.prevrec := b;
eoln вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические списки Ольчик Паскаль, Turbo Pascal, PascalABC.NET 4 15.01.2012 14:33
Динамические списки Saawa Помощь студентам 4 02.12.2009 18:35
Динамические списки tgig Паскаль, Turbo Pascal, PascalABC.NET 6 30.06.2009 14:53
Динамические списки MyQwErTy Помощь студентам 3 14.04.2009 20:08
Динамические списки lubafffka Паскаль, Turbo Pascal, PascalABC.NET 6 17.12.2008 21:59