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

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

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

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


Новичок
*

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

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


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

 





- Текстовая версия 19.05.2024 21:12
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name