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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2012, 17:03   #1
vasiliy42
Новичок
Джуниор
 
Регистрация: 16.06.2012
Сообщений: 2
Восклицание в чём ошибка?

Процедуру удаления из очереди заменить на функцию.
исходник:
Код:
Program queue;
Type Tptr=^TElem; 
             TElem=record 
             inf : char; 
             link : Tptr 
     end;
Var begq,endq : Tptr; 
    value : char;
    i : byte;
 
Procedure AddEl(val : char); 
Var p:tptr; 
begin
    new(p);
    p^.inf:=val;
    p^.link:=nil;
    if endq=nil then begq:=p
        else endq^.link:=p;
    endq:=p
end;
 
Procedure GetDelEl(var val : char); 
var p : TPtr; 
begin
    val:=begq^.inf;
    p:=begq; begq:=p^.link;
    if begq=nil then endq:=nil;
    dispose(p)
end;
 
begin
    new(begq);
    new(endq);
    begq:=nil; 
    endq:=nil;
    for i:=1 to 10 do
    begin
        writeln('3');
        readln(value);
        addel(value);
    end;
    i:=1;
    while begq<>nil do
    begin
        getdelel(value);
        writeln(i,'-й символ - ',value);
        inc(i)
    end
end.
то что получилось:
Код:
Program queue;
Type Tptr=^TElem; 
             TElem=record 
             inf : char; 
             link : Tptr 
     end;
Var begq,endq : Tptr; 
    value : char;
    i : byte;
 
Procedure AddEl(val : char); 
Var p:tptr; 
begin
    new(p);
    p^.inf:=val;
    p^.link:=nil;
    if endq=nil then begq:=p
        else endq^.link:=p;
    endq:=p
end;
 
Function GetDelEl(var val : char):char; 
var p : TPtr; 
begin
    val:=begq^.inf;
    p:=begq; begq:=p^.link;
    if begq=nil then endq:=nil;
    dispose(p)
end;
 
begin
    new(begq);
    new(endq);
    begq:=nil; 
    endq:=nil;
    for i:=1 to 10 do
    begin
        writeln('3');
        readln(value);
        addel(value);
    end;
    i:=1;
    while begq<>nil do
    begin
        getdelel(value);
        writeln(i,'-й символ - ',value);
        inc(i)
    end
end.
vasiliy42 вне форума Ответить с цитированием
Старый 17.06.2012, 17:19   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
Function GetDelEl(val : char):char; 
var p : TPtr; 
begin
    val:=begq^.inf;
    p:=begq; begq:=p^.link;
    if begq=nil then endq:=nil;
    dispose(p)
end;
Код:
begin
        value:=getdelel(value);
        writeln(i,'-й символ - ',value);
        inc(i)
    end
Идея ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.06.2012, 17:31   #3
vasiliy42
Новичок
Джуниор
 
Регистрация: 16.06.2012
Сообщений: 2
По умолчанию

не совсем
vasiliy42 вне форума Ответить с цитированием
Старый 17.06.2012, 18:32   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Плехо. Плехо не то что идея не ясна - это и обьяснить можно, а то что ты кросспостиш
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чём ошибка? -SandwicH- Общие вопросы C/C++ 10 10.06.2012 19:05
В чём ошибка? kotaina Общие вопросы Delphi 0 24.06.2011 16:36
В чём ошибка? Edward_92 Помощь студентам 0 16.05.2011 14:38