Вопрос задан 29.07.2023 в 08:50. Предмет Информатика. Спрашивает Тыщенко Ксения.

Помогите,пожалуйста. Дана строка не более 50 символов. Переписать в обратном порядке все слова,

начинающиеся с заданной буквы. Определить количество предложений в строке. Написать программу в паскале
0 0
Перейти к ответам

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

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

begin
  var adelim:=' .,;:!?-'.ToCharArray;
  var s:=ReadlnString;
  Writeln(25*'- ');
  var c:=ReadlnChar('Буква для поиска слов:'); Writeln(25*'- ');
  var ww:=s.ToWords(adelim).Where(w->w.First=c);
  foreach var w in ww do begin
    var i:=Pos(w,s);
    Delete(s,i,w.Length); Insert(w.Inverse,s,i)
    end;
  s.Println; Writeln(25*'- ');
  Writeln('Предложений всего: ',s.ToWords('.').Count)
end.

0 0
Отвечает Бернацкая Виолетта.
// PascalABC.NET 
// Версия 3.3.5 сборка 1662 (29.04.2018)

begin
  var b := ReadlnString('Введите строку -').ToLower+' '; 
  var (z,r) := (',!?.:;'.ToCharArray,'!.?;'.ToCharArray);
  var tt:=true; Range(1,b.Length+b.ToCharArray.Where(t->t in z).Count).ForEach(t->if (b[t] in z) and tt then begin Insert(' ', b, t); tt:=false end else tt:=true);
  var a := b.ToWords;
  var x := ReadlnChar('Буква -');
  var (w, i) := a.Select((w, i)-> (w, i)).Where(t -> t[0].ToString.First.ToLower = x).Reverse.UnZipTuple; 
  i := i.Reverse;
  foreach var t in w.Zip(i, (p, q)-> (p, q)) do a[t[1]] := t[0];
  b := string.Join(' ', a);
  tt:=true; Range(1,b.Length-b.ToCharArray.Where(t->t in z).Count+1).ForEach(t->if (b[t] in z) and tt then begin Delete(b, t - 1, 1); tt:=false end else tt:=true); 
  b.Println; Println('Количество предложений:',b.ToWords(r).Count);
end.

Пример в приложении.

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

Конечно, помогу! Ниже приведена программа на языке Pascal, которая выполняет задачи, описанные в вашем запросе.

pascal
program ReverseWords; const MaxStringLength = 50; type TStringArray = array of string; function ReverseWordsStartingWithLetter(inputStr: string; letter: char): string; var words: TStringArray; word: string; i, j, startPos: integer; begin // Разбиваем строку на слова SetLength(words, 0); i := 1; while i <= Length(inputStr) do begin while (i <= Length(inputStr)) and (inputStr[i] = ' ') do Inc(i); startPos := i; while (i <= Length(inputStr)) and (inputStr[i] <> ' ') do Inc(i); SetLength(word, i - startPos); for j := 1 to Length(word) do word[j] := inputStr[startPos + j - 1]; SetLength(words, Length(words) + 1); words[Length(words) - 1] := word; end; // Переписываем в обратном порядке слова, начинающиеся с заданной буквы for i := 0 to Length(words) - 1 do begin if words[i] <> '' then begin if words[i][1] = letter then begin word := ''; for j := Length(words[i]) downto 1 do word := word + words[i][j]; words[i] := word; end; end; end; // Формируем итоговую строку result := ''; for i := 0 to Length(words) - 1 do result := result + words[i] + ' '; end; function CountSentences(inputStr: string): integer; var i: integer; begin result := 0; for i := 1 to Length(inputStr) do begin if (inputStr[i] = '.') or (inputStr[i] = '!') or (inputStr[i] = '?') then Inc(result); end; end; var inputString, letter: string; numSentences: integer; begin WriteLn('Введите строку (не более 50 символов): '); ReadLn(inputString); WriteLn('Введите букву для поиска слов: '); ReadLn(letter); WriteLn('Исходная строка:'); WriteLn(inputString); WriteLn('Результат:'); WriteLn(ReverseWordsStartingWithLetter(inputString, letter)); numSentences := CountSentences(inputString); WriteLn('Количество предложений в строке: ', numSentences); ReadLn; end.

Программа сначала получает строку и букву от пользователя, а затем использует две функции - ReverseWordsStartingWithLetter для переписывания слов и CountSentences для подсчета предложений. Она затем выводит исходную строку и результат, а также количество предложений в исходной строке.

0 0

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

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

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

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