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

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

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

> R-список, Нужна помощь
Dunkel_L
сообщение 13.12.2005 14:47
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Мужской

Репутация: -  0  +


Нужно написать процедуру в R-списе(info:string) (кольцевой список), которая меняет местами слова с четными номерами и нечетными (1-е со 2-м и т.д.)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Dunkel_L
сообщение 28.12.2005 23:04
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Мужской

Репутация: -  0  +


Спасибо. Все работает. Но правда это у меня не кольцевой список.sad.gif


Вот правильная реализация с твоей процедурой
Код

uses CRT;
type ptr=^node;
     node=record
     info:string;
     link:ptr;
     end;
var top,w2:ptr;
     a:word;
     b:string;

procedure Push(n:string);
var w1,w2:ptr;
begin
new(w1);
w1^.info:=n;
w2^.link:=w1^.link;
w1^.link:=top;
top:=w1;
end;

procedure vid(w1:ptr);
begin
  if (w1<>w2) then
    begin;
      vid(w1^.link);
      write(w1^.info,' ')
    end;
end;
{__________инверсия списка__________}
procedure pe(p:ptr);
var
  q:ptr;
  T: string;
begin
  q := p;
  while (p <> nil) and (p^.link <> nil) do begin
    T := p^.info;
    p^.info := p^.link^.info;
    p^.link^.info := T;

    p := p^.link^.link;
  end;
end;
{__________удаления списка__________}
function Pop:string;
var
   l:ptr;
begin
   if top <> l  then

   begin
      l:=top^.link;
      Pop:=top^.info;
      dispose (top);
      top:=l;
   end
     else  begin
      Writeln('   Ошибка! Список пуст   ');
      pop:='  ';
   end;
end;
{__________конец удаления__________}
begin
repeat
clrscr;
writeln('   1-Ввод числа в список');
writeln('   2-Удаление числа из списка');
writeln('   3-Вывод списка на экран');
writeln('   4-Вывод инвертированного списка');
writeln('   5-Выход из программы');
write('   Введите команду   ');
   readln(a);
   if a=1 then
      begin
         write('   Введите слово:  ');
         readln(b);
         Push(b);
      end else
   if a=2 then
      begin
         Writeln;
         Write(Pop);
         writeln('   удалено из стека');
         readln;
      end else
    if a=3 then
    begin
     Write('   Список:');
     vid(top);
     Writeln;
     readln;
      end else
    if a=4 then
      begin
         Write('   Исходный список:');
         vid(top);
         Writeln;
         Write('   Инвертированный список:');
         pe(top);
         Writeln;
         readln;
      end else
           if a>5 then
             Begin
               Writeln('   Неправильный ввод!  ');
             end;
until(a=5)
end.

Но теперь, если в лоб ставить твою процедуру, то перевернутый список не выводиться на экран.
Помоги разобраться, в чем беда.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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