• Предмет: Информатика
  • Автор: bunnydanka2
  • Вопрос задан 2 года назад

ДАЮ 20 БАЛЛОВ!!!
с клавиатуры вводится строка, состоящая из слов, разделенных пробелами. Составьте программу, удаляющую лишние пробелы. пробел считается лишним, если он стоит в начале или в конце строки, следует за пробелом, стоит перед знаком препинания


BobbyFresnel: Я написал строку для контрольного примера. И хочу ответ на свой вопрос.
BobbyFresnel: И еще. Если Паскаль работает в Винде, он ASCII не пользует.
bunnydanka2: ( - ! все знаки припинания
bunnydanka2: цифры - нет
BobbyFresnel: все знаки припинания - перечислите, пожалуйста. Вам задача кажется ерундой, но она не такая простая.
bunnydanka2: думаю, что этого будет достаточно: - ' " : ; , ? ! ( ) .
bunnydanka2: кстати, на счет ascii. Я писала программу, использовала ascii, pascal видел символы из таблицы до 127 номера. дальше - нет
BobbyFresnel: А это смотря какой паскаль. Если тот, что работает в дос-среде или дос-оболочке - не видит. Если PascalABC.NET или Delphi под windows- там все сложнее, .NET вообще работает с бвухбайтным Unicode.
BobbyFresnel: Ну да ладно, Вы написали все символы, ктороые считатет знаками препинания - так тому и быть.
bunnydanka2: спасибо большое:)

Ответы

Ответ дал: BobbyFresnel
3

===== PascalABC.NET =====

begin

 var p: set of char := ['-', '"', '''', ':', ';', ',',

     '?', '!', '(', ')', '.'];

 var s:= ReadlnString('Вводите:');

 var (a, i) := (s.ToWords, 0);

 while i < a.High do

 begin

   if a[i+1][1] in p then

   begin

     a[i] += a[i+1];

     a[i+1] := '';

     i += 2

   end

 else

   i += 1  

 end;

 s:= a.Where(p -> p.Length > 0).JoinIntoString;

 Writeln(s)

end.

Приложения:
Вас заинтересует