Вопрос задан 09.10.2023 в 08:08. Предмет Информатика. Спрашивает Руднев Макар.

Решить в Pascal: Дана строка и некоторое слово. Напечатать те предложения строки, которые

содержат данное слово.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Кусь Егор.
PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018
Внимание! Если программа не работает, обновите версию!

begin
  var s:=ReadlnString;
  var a:=s.ToWords('.').Select(t->Trim(t)).ToArray;
  var b:=s.ToWords(Arr('.',' '))
      .GroupBy(t->t).Select(t->(t.Key,t.Count))
      .Where(t->t[1]>1).Select(t->t[0]).ToArray;
  a.Cartesian(b,(p,q)->p.Contains(q)?p:'')
      .Where(t->t.Length>0).Distinct.PrintLines
end.

Примеры
Мама мыла полы. Маша ела кашу. Даша пила молоко. Таня мыла полы.
Мама мыла полы
Таня мыла полы

Мама мыла раму. Маша ела кашу. Даша пила молоко. Таня мыла полы.
Мама мыла раму
Таня мыла полы
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения этой задачи на Pascal, вам потребуется сначала считать строку и слово, а затем проверить каждое предложение строки на наличие данного слова. Вот пример программы, которая выполняет это:

pascal
program SearchSentences; const MaxSentences = 1000; // Максимальное количество предложений в строке MaxSentenceLength = 1000; // Максимальная длина предложения var InputString: string; SearchWord: string; Sentences: array[1..MaxSentences] of string; SentenceCount, i: integer; procedure SplitStringIntoSentences(InputStr: string); var Delimiters: set of char; CurrentSentence: string; PosInInputStr: integer; begin Delimiters := ['.', '!', '?']; // Задаем символы-разделители предложений SentenceCount := 0; CurrentSentence := ''; for PosInInputStr := 1 to Length(InputStr) do begin if InputStr[PosInInputStr] in Delimiters then begin // Добавляем текущее предложение в массив Inc(SentenceCount); Sentences[SentenceCount] := CurrentSentence + InputStr[PosInInputStr]; CurrentSentence := ''; end else CurrentSentence := CurrentSentence + InputStr[PosInInputStr]; end; // Если последнее предложение не заканчивается знаком препинания, добавляем его if CurrentSentence <> '' then begin Inc(SentenceCount); Sentences[SentenceCount] := CurrentSentence; end; end; begin Write('Введите строку: '); Readln(InputString); Write('Введите слово для поиска: '); Readln(SearchWord); // Разделяем строку на предложения SplitStringIntoSentences(InputString); // Ищем и выводим предложения, содержащие искомое слово for i := 1 to SentenceCount do begin if Pos(UpperCase(SearchWord), UpperCase(Sentences[i])) > 0 then writeln(Sentences[i]); end; Readln; end.

Эта программа сначала считывает строку и слово, разделяет строку на предложения и затем проверяет каждое предложение на наличие искомого слова (регистр не учитывается) и выводит предложения, которые содержат данное слово.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос