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

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

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

> Линейные списки!, Не могу разобраться!
Vania
сообщение 30.04.2007 12:11
Сообщение #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 - 30.04.2007 12:21
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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