Pascal, строки Ввести строку и слово. Удалить слово из строки, если она в ней содержится.

0 голосов
131 просмотров

Pascal, строки
Ввести строку и слово. Удалить слово из строки, если она в ней содержится.


Информатика (2.1k баллов) | 131 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
// PascalABC.NET 3.2, сборка 1387 от 20.02.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var aw:=ReadlnString('Введите строку:').ToWords;
  var w:=ReadlnString('Введите искомое слово:');
  var i:=aw.FindIndex(e->e=w);
  var s:string;
  if i>-1 then
    if i=aw.Count-1 then s:=aw[:i].JoinIntoString
    else s:=(aw[:i]+aw[i+1:]).JoinIntoString
  else s:=aw.JoinIntoString;
  s.Println
end.

Замечание:
Учитываются именно слова, а не контекст, т.е. слово должно отделяться от остальной части строки пробелом, либо признаками начала/конца строки.
(150k баллов)
0 голосов

Var
  subs, s: string;
begin
  write('Enter the string: ');
  readln(s);
  s := s + ' ';
  write('Enter the word: ');
  read(subs);
  while pos(' ', subs) > 0 do
    delete(subs, pos(' ', subs), 1);
  subs := ' ' + subs + ' ';
  if pos(subs, s) > 0 then
    delete(s, pos(subs, s) + 1, length(subs) - 1);
  write('The resulting string: ', s);
end.

(13.3k баллов)
0

Вроде, поправил

0

Я бы и сам написал на .NET в одну строчку со всеми прелестями, типа лямбда и регулярных выражение, но автор попросит переписать это на "обычный" паскаль

0

По крайней мере, попытался написать понятно, и использовать обычный синтаксис