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

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

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

> Линейные списки!, Не могу разобраться!
сообщение
Сообщение #1


Новичок
*

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

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


Вот условие:
Задан список из n символов. Получить последовательность символов, содер-жащую только последние вхождения каждого символа с сохранением взаимно-го порядка этих вхождений.
вот мое решение:
Код
Type
    point1 = ^MyWord1;
    MyWord1 = record
           ch: char;
         next: point1;
  end;
     point2 = ^MyWord2;
    MyWord2 = record
           ch: char;
         next: point2;
  end;
procedure input(var first:point1;var f2:point2);{создаем 2 списка}
var r:point1;r1:point2;
begin
    first:= nil; f2:=nil;
    while r^.ch <> '.' do
       begin
          new®;
          r^.next:=first;
          first:=r;
          readln(r^.ch);
          new(r1);
          r1^.next:=f2;
          f2:=r1;
          r1^.ch:=' ';{второй список пока заполняем пробелами..}
       end;
end;
procedure get_st(f1:point1; var f2:point2);{модифицируем список}
var w,b:boolean;q:point2;q1:point1;
begin
while f1<>nil do
  begin
   w:=false;b:=true;
   while (f2<>nil)and b do
                      begin
                       if f2^.ch=f1^.ch then
                                         begin
                                          w:=true;
                                          b:=false;
                                         end
                                        else  f2:=f2^.next;
                      end;
   if w=false then begin
                       f2^.ch:=f1^.ch;
                      end;
   f1:=f1^.next;
  end;

end;
var f1:point1;f2:point2;
begin
clrscr;
input(f1,f2);
get_st(f1,f2);
writeln;
write('---> ');
while f2<>nil do
              begin
               write(f2^.ch,' ');
               f2:=f2^.next;
              end;
end.

Но программа отчего то пробегает по 2 списку только 1 раз!
Помогите, пожалуйста!

Сообщение отредактировано: Vania -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





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