Помощь - Поиск - Пользователи - Календарь
Полная версия: списки. удаление буквы из слов
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Insomnia
program delete_1_bykvy_iz_slov;
// удалить 1_ю букву из всех слов

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  Tinfo= string;
  TList= ^TElem;
  TElem= record
         info: Tinfo;
         next: TList;
         end;

procedure create (var p: Tlist;info: Tinfo);
begin
  if p<>nil then create(p^.next,info)
            else begin
                   new(p);
                   p^.info:=info;
                   p^.next:=nil;
                 end;
end;

procedure input (var p: Tlist);
var
  ch: char;
  s: string;
begin
  writeln('input a text, point - end');
  read(Ch);
  if Ch='.' then begin
                   writeln('the text are empty');
                   readln;
                   readln;
                   exit
                end
           else
  begin
    while Ch<>'.' do
    begin
      s:=s+Ch;
      read(Ch)
    end;
    readln;
  end;
  create (p,s);
end;

procedure print (l: Tlist);
var
  p: Tlist;
begin
  p:=l;
  while p<>nil do
  begin
    writeln(p^.info);
    p:=p^.next;
  end;
end;



var
  L: Tlist;
begin
  input(L);
  print (L);
  readln
end.


не пойму, как мне обратиться к 1 букве. список я правильно создал?
IUnknown
Цитата
список я правильно создал?
Нет. В любом случае неправильно. По двум причинам:

1. Тебе нужен не список, содержащий всю введенную строку за исключением точки, а список, который в качестве элементов содержит слова (то есть, надо разделять введенную строку на слова и хранить каждое из них в отдельном элементе списка. Добавляется одной-единственной строкой: проверкой очередного символа на разделитель между словами, и если да - то записать новое слово в список и "обнулить" временную переменную s).

2. Даже если тебе нужно хранить сразу всю введенную строку в одном-единственном элементе списка (хотя зачем тогда список? Храни просто в строковой переменной), то и тогда это сделано неверно. Потому, что ты не учишься на ошибках. У тебя уже были предупреждения, что переменная может не быть инициализированной, так? Вот здесь - тот же случай: внутри input строка s не инициализируется. Это еще более усугубляется тем, что переменная не глобальная, а локальная, то есть, содержит мусор. Как бы ты правильно не написал create, если ты в нее передашь мусор - то и получишь в результате его же.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.