Добавил:
Silebox
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
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.
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.