Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы / лаб5 / lab5_1

.pas
Скачиваний:
9
Добавлен:
07.06.2023
Размер:
2.66 Кб
Скачать
program lab5_1;
var
a: array of string;
n: string;
i,j,f: integer;
arr_size: integer = 0;
an: integer = 1;
temp_str: string = '';
bad_symbs: array[1..5] of string = (' ', '.', '!', ',', '?');
begin
Write('Введите Выражение: '); ReadLn(n);

// определяем количество слов
for i:=1 to Length(n) do
begin
if (i = 1) or (n[i] = ' ') then arr_size := arr_size + 1;
end;

// выделяем длину массива равную количеству слов
setLength(a,arr_size);

// разделяем введённую строку на отдельные слова, и добавляем их в массив
for i:=1 to Length(n) do
begin
// в случае если мы находим пробел или конец выражения, то добавляем сгенерированное слово в массив
if (n[i] = ' ') or (i = Length(n)) then
begin
// в случае если мы находим конец строки, то добавляем последний символ к временной переменной строки
if (i = Length(n)) then temp_str := temp_str + n[Length(n)];
a[an] := temp_str;
temp_str := '';
an := an + 1;
end
// в других случаях, мы добавляем к временной переменной строки символ
else
begin
f := 0;
for j:=1 to Length(bad_symbs) do
begin
if (n[i] <> bad_symbs[j]) then f := f + 1;
end;
if (f = Length(bad_symbs)) then temp_str := temp_str + n[i];
end;
end;

// сортируем по возрастанию массив по длине каждого слова. переиспользуем переменную temp_str для экономии памяти
for i:=1 to Length(a) do
begin
for j:=1 to Length(a)-1 do
begin
if (Length(a[j]) > Length(a[j+1])) then
begin
temp_str := a[j];
a[j] := a[j+1];
a[j+1] := temp_str;
end;
end;
end;

// длины слов делим на 2, потому что Length() возвращает длину строки в кирилице умноженную на 2
WriteLn('Длина самого короткого слова: ', Length(a[1]) div 2);
WriteLn('Длина самого длинного слова: ', Length(a[Length(a)]) div 2)
end.
Соседние файлы в папке лаб5