Ввести из текстового файла предложение, состоящее из прописных латинских букв, переставить слова в предложении по алфавиту в соответствии с его первой буквой.
Решение
Program Text; {название программы}
{Задание4 выполнено учащимся № группы ФИО № варианта}
Type
stroka =string[30];
Uses
crt; {подключение модуля для работы с экраном}
var {объявление переменных}
s:string;
mas:array[1..100] of string;
i,j,k:integer;
namefilein:stroka;
t: text;
procedure delblanks(var ss:string);
{процедура удаления пробелов}
Begin
while ss[1]=' ' do
delete(ss,1,1);
end;
begin {начало программы}
clrscr; {очистка экрана}
writeln('Задание 4');
writeln('Переставить слова в предложении, введенном из файла');
write(' Введите имя входного файла ');
readln(namefilein);
assign(t,namefile); {подключение файла}
Reset(t); {открытие файла для чтения}
{вывод сообщений на экран}
write('Начальноепредложение:');
read(t,s); {чтение предложения}
writeln(s); {печать предложения}
k:=1; {счетчик слов в предложении}
if s[length(s)]='.' then {удаляем точку в конце предложения}
delete(s,length(s),1);
s:=s+' '; {вставляем пробел}
while length(s)>0 do
Begin
delblanks(s);
i:=pos(' ',s);
mas[k]:=copy(s,1,i-1);
inc(k);
delete(s,1,i);
end;
write('Измененноепредложение:');
for i:=1 to k do
for j:=i to k do
Begin
if UpCase(mas[i][1])>UpCase(mas[j][1]) then
Begin
s:=mas[i];
mas[i]:=mas[j];
mas[j]:=s;
end;
end;
for i:=1 to k-1 do
Begin
delblanks(mas[i]);
write(mas[i],' ')
end;
write(mas[k],'.');
close(t);
readkey; {ожидание нажатия клавиши}
end.
Результат выполнения программы приведен на рис. 4.4.