
Вопрос задан 09.10.2023 в 08:08.
Предмет Информатика.
Спрашивает Руднев Макар.
Решить в Pascal: Дана строка и некоторое слово. Напечатать те предложения строки, которые
содержат данное слово.

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

Отвечает Кусь Егор.
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.
Примеры
Мама мыла полы. Маша ела кашу. Даша пила молоко. Таня мыла полы.
Мама мыла полы
Таня мыла полы
Мама мыла раму. Маша ела кашу. Даша пила молоко. Таня мыла полы.
Мама мыла раму
Таня мыла полы
Внимание! Если программа не работает, обновите версию!
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.
Примеры
Мама мыла полы. Маша ела кашу. Даша пила молоко. Таня мыла полы.
Мама мыла полы
Таня мыла полы
Мама мыла раму. Маша ела кашу. Даша пила молоко. Таня мыла полы.
Мама мыла раму
Таня мыла полы



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для решения этой задачи на Pascal, вам потребуется сначала считать строку и слово, а затем проверить каждое предложение строки на наличие данного слова. Вот пример программы, которая выполняет это:
pascalprogram 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.
Эта программа сначала считывает строку и слово, разделяет строку на предложения и затем проверяет каждое предложение на наличие искомого слова (регистр не учитывается) и выводит предложения, которые содержат данное слово.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili