Переставить слова в каждом предложении в обратном порядке - 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.
Объяснение кода листинга программы
- Объявление переменных:
pred,perest,mas,r,k,t,w1,w,s,vrem,predl,i.
- Ввод предложений:
- Вводится строка предложений (s) с клавиатуры.
- Добавление точки в конец строки:
- Добавляется точка в конец строки (s).
- Инициализация временных переменных:
vremиpredlинициализируются пустыми строками.
- Итерация по символам в строке:
- Происходит итерация по всем символам в строке (s).
- Выделение предложения:
- Если текущий символ - точка, то происходит выделение предложения в переменную
pred, после чего зануляются значения элементов массиваmasи других временных переменных.
- Если текущий символ - точка, то происходит выделение предложения в переменную
- Разбиение предложения на слова:
- Предложение разбивается на отдельные слова и помещается в массив
mas.
- Предложение разбивается на отдельные слова и помещается в массив
- Перестановка слов в обратном порядке:
- Слова в массиве
masпереставляются в обратном порядке.
- Слова в массиве
- Составление предложения:
- Слова из массива
masсобираются в предложениеw, которое помещается в переменнуюperest.
- Слова из массива
- Вывод переставленных предложений:
- Выводится переставленное предложение в формате
predl+perest.
- Выводится переставленное предложение в формате
- Обнуление временных переменных:
- Обнуляются переменные
predlиvremдля следующей итерации.
- Обнуляются переменные
- Вывод оставшегося предложения:
- Выводится оставшееся предложение после последней точки.