Помощь - Поиск - Пользователи - Календарь
Полная версия: Ссылки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
DD
Надо прогу немного переделать, не пойму как сделать.. что-то с этим у меня проблема.. Короче, список оканчивается точкой, как бы сделать, что просто при Enter он делал завершение списка?

Код


uses crt;
type
 spisok = ^Elem;
 elem = record
          c:char;
          next:spisok
        end;
var
 str,ut,E:spisok;
 s:pointer;
 sm:char;
procedure input;
var sim:char;
begin
 Write('Введите вставляемый символ:');
 readln(sm);
 write('Введите строку:');
 ut:=str;
 while sim<>'.' do
   begin
     read(sim);
     if sim <> '.' then
       begin
         ut^.c:=sim;
         new(ut^.next);
         ut:=ut^.next;
       end
     else
       begin
         ut^.c:='.';
         ut^.next:=nil;
       end;
   end;
end;
procedure vstavka;
begin
 new(E);
 e^.c:=sm;
 E^.next:=nil;

 ut:=str;
 while ut^.next<>nil do
   begin
     ut:=ut^.next;
   end;
 ut^.next:=e;

end;

procedure output;
var
 sim:char;
begin
 write('Исходная:');
 ut:=str;

 while ut<>nil do
   begin
     write(ut^.c);
     ut:=ut^.next;
   end;

 Vstavka;
 writeln;
 write('Полученная:');
 ut:=str;
 while ut<>nil do
   begin
     write(ut^.c);
     ut:=ut^.next;
   end;
 writeln;
end;
begin
 new(str);
 mark(s);
 input;
 output;
 release(s);
 readkey
end.


volvo
  while sim<>'.' do
begin
read(sim);
if sim <> '.' then
begin
ut^.c:=sim;
new(ut^.next);
ut:=ut^.next;
end
else
begin
ut^.c:='.';
ut^.next:=nil;
end;
end;

заменить на:
repeat
sim := readkey; write(sim);
if (sim <> #13) then begin
ut^.c:=sim;
new(ut^.next);
ut:=ut^.next;
end
else begin
ut^.c:='.'; { это тоже можно исправить... }
ut^.next:=nil;
end;
until sim = #13;
DD
Да что-то подобное сделал.. теперь косяки при выводе данных.. как это исправить? почему они ругаются? вывод данных теперь вообще левый.. sad.gif
volvo
Ну тогда придется еще разбивать программу на функции... В отдельную функцию выделяй добавление элемента к списку. У тебя список не совсем правильно формируется... А вообще, очень похожая задачка была здесь: Списки
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.