Задача: Строки в комбинации с другими типами задач
Описание
Характеристики решённой задачи
Список файлов
Задача:
В строке, состоящей из слов, разделенных пробелами, определить длину кратчайшего и самого длинного слов.
Описание переменных:
str - исходная строка,
len - длина исходной строки,
shortest, longest - длины самого короткого и самого длинного слов,
current - длина текущего слова.
Алгоритм решения задачи:
Увеличиваем значение переменной current, пока не встретим пробел. Тем самым узнаем длину текущего слова.
Если очередной символ - это пробел, то сравниваем значение current со значениями записанными в переменных shortest и longest. При необходимости меняем их значения на то, что находится в current. Значение current обнуляем.
Чтобы сравнить длину последнего слова (ведь пробела после него может не быть, и, следовательно, current не сравнивается с shortest и longest), предусмотрено сравнение переменных за циклом.
Программа на языке Паскаль:
var
str: string;
len, i: byte;
shortest, longest, current: byte;
begin
readln(str);
len := length(str);
shortest := 255;
longest := 0;
current := 0;
for i:=1 to len do begin
if (str[i] <> ' ') then
current := current + 1
else begin
if current < shortest then
shortest := current;
if current > longest then
longest := current;
current := 0;
end;
end;
if current < shortest then
shortest := current;
if current > longest then
longest := current;
writeln(shortest, ' ', longest);
readln;
end.
Задача:
Ввести массив строк и найти в нем максимальную по длине строку.
1) Не учитывать случай, когда таких строк несколько
2) Если строка с максимальной длиной не одна, вывести все.
Описание переменных:
ss - массив строк;
ind - индекс самой длинной строки в массиве.
Алгоритм решения задачи:
1)
Считываем строки, введенные пользователем, и помещаем их в массив.
Присваиваем переменной ind значение 1. Тем самым предполагаем, что самая длиная строка - это первая сторока в массиве.
Перебираем элементы массива (строки), начиная со второго.
Если длина очередной строки больше, чем длина строки, индекс которой присвоен ind, то меняем значение ind на индекс текущей строки.
Выводим на экран строку, индекс которой содержится в ind.
2)
Добавляется цикл перебора массива и сравнение длины очередной строки с длиной строки, индекс которой содержится в ind.
Программа на языке Паскаль:
1)
const N = 5;
var
ss: array[1..N] of string;
i,ind: byte;
begin
for i:=1 to N do
readln(ss[i]);
ind:=1;
for i:=2 to N do
if length(ss[i]) > length(ss[ind]) then
ind := i;
writeln(ss[ind]);
readln;
end.
2)
for i:=1 to N do
if length(ss[i]) = length(ss[ind]) then
writeln(ss[i]);
Возможно не удалось распознать кодировку файла
Задача:
Ввести массив строк и найти в нем максимальную по длине строку.
1) Не учитывать случай, когда таких строк несколько
2) Если строка с максимальной длиной не одна, вывести все.
Описание переменных:
ss - массив строк;
ind - индекс самой длинной строки в массиве.
Алгоритм решения задачи:
1)
Считываем строки, введенные пользователем, и помещаем их в массив.
Присваиваем переменной ind значение 1. Тем самым предполагаем, что самая длиная строка - это первая сторока в массиве.
Перебираем элементы массива (строки), начиная со второго.
Если длина очередной строки больше, чем длина строки, индекс которой присвоен ind, то меняем значение ind на индекс текущей строки.
Выводим на экран строку, индекс которой содержится в ind.
2)
Добавляется цикл перебора массива и сравнение длины очередной строки с длиной строки, индекс которой содержится в ind.
Программа на языке Паскаль:
1)
const N = 5;
var
ss: array[1..N] of string;
i,ind: byte;
begin
for i:=1 to N do
readln(ss[i]);
ind:=1;
for i:=2 to N do
if length(ss[i]) > length(ss[ind]) then
ind := i;
writeln(ss[ind]);
readln;
end.
2)
for i:=1 to N do
if length(ss[i]) = length(ss[ind]) then
writeln(ss[i]);
Возможно не удалось распознать кодировку файла