Переставить слова в каждом предложении в обратном порядке - Pascal

Узнай цену своей работы

Формулировка задачи:

function perest(pred:string):string;
var
 mas:array[1..50] of string;
 r,k:integer;
 t,w1,w:string;
begin
 for r:=1 to 50 do
 mas[r]:=' ';
 w:=' ';
 w1:=' ';
 k:=1;
 t:=' ';
 pred:=pred+' ';
 for r:=1 to length(pred) do
 if pred[r]=' ' then
 begin
 if t<>' ' then
 begin
 mas[k]:=t;
 t:=' ';
 k:=k+1;
 end;
 end
 else
 t:=t+pred[r];
 k:=k-1;
 for r:=1 to (k div 2) do
 begin
 w1:=mas[r];
 mas[r]:=mas[k-r+1];
 mas[k-r+1]:=w1;
 end;
 w:=mas[1];
 for r:=2 to k do
 w:=w+' '+mas[r];
 w:=w+'.';
 perest:=w;
end;
var s,vrem,predl:string;
 i:integer;
begin
 write('Введите предложения: ');
 readln(s);
 s:=s+'.';
 vrem:=' ';
 predl:=' ';
 for i:=1 to length(s) do
 if (s[i]='.') then
 begin
 predl:=predl+perest(vrem);
 vrem:=' ';
 end
 else
 vrem:=vrem+s[i];
 write(predl);
 
end.
Нужно переделать без функшон и без процедур) Задание следующее: Считая что число предложений и число строк могут не совпадать каждое слово находится целиком в одной строке ввод строки завершается нажатием энтер точка конец предложения Переставить слова в каждом предложении в обратном порядке заранее благодарен

Решение задачи: «Переставить слова в каждом предложении в обратном порядке»

textual
Листинг программы
var
 pred,perest: string;
 mas:array[1..50] of string;
 r,k:integer;
 t,w1,w:string;
 
var s,vrem,predl:string;
 i:integer;
begin
 write('Введите предложения: ');
 readln(s);
 s:=s+'.';
 vrem:=' ';
 predl:=' ';
 for i:=1 to length(s) do
   if (s[i]='.') then begin
    //*******
         pred := vrem;
       for r:=1 to 50 do
       mas[r]:=' ';
       w:=' ';
       w1:=' ';
       k:=1;
       t:=' ';
       pred:=pred+' ';
       for r:=1 to length(pred) do
       if pred[r]=' ' then
       begin
       if t<>' ' then
       begin
       mas[k]:=t;
       t:=' ';
       k:=k+1;
       end;
       end
       else
       t:=t+pred[r];
       k:=k-1;
       for r:=1 to (k div 2) do
       begin
       w1:=mas[r];
       mas[r]:=mas[k-r+1];
       mas[k-r+1]:=w1;
       end;
       w:=mas[1];
       for r:=2 to k do
       w:=w+' '+mas[r];
       w:=w+'.';
       perest:=w;
    //*******
    writeln(predl+perest);
     predl:='';
     vrem:=' ';
   end else
    vrem:=vrem+s[i];
 write(predl);
 
end.

Объяснение кода листинга программы

  1. Объявление переменных:
    • pred, perest, mas, r, k, t, w1, w, s, vrem, predl, i.
  2. Ввод предложений:
    • Вводится строка предложений (s) с клавиатуры.
  3. Добавление точки в конец строки:
    • Добавляется точка в конец строки (s).
  4. Инициализация временных переменных:
    • vrem и predl инициализируются пустыми строками.
  5. Итерация по символам в строке:
    • Происходит итерация по всем символам в строке (s).
  6. Выделение предложения:
    • Если текущий символ - точка, то происходит выделение предложения в переменную pred, после чего зануляются значения элементов массива mas и других временных переменных.
  7. Разбиение предложения на слова:
    • Предложение разбивается на отдельные слова и помещается в массив mas.
  8. Перестановка слов в обратном порядке:
    • Слова в массиве mas переставляются в обратном порядке.
  9. Составление предложения:
    • Слова из массива mas собираются в предложение w, которое помещается в переменную perest.
  10. Вывод переставленных предложений:
    • Выводится переставленное предложение в формате predl+perest.
  11. Обнуление временных переменных:
    • Обнуляются переменные predl и vrem для следующей итерации.
  12. Вывод оставшегося предложения:
    • Выводится оставшееся предложение после последней точки.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5
Похожие ответы