Найти в строке запись максимального действительного числа - Pascal
Формулировка задачи:
Задана строка символов, среди которых есть хотя бы одна цифра. В качестве записи действительного числа будем рассматривать такую подстроку, которая
состоит из цифр.
Требуется написать программу, которая будет находить в заданной строке запись максимального действительного числа ( на любом языке программирования)
Формат входных данных: Входные данные ( последовательность символов) вводятся с клавиатуры
Формат выходных данных: В качестве выходных данных необходимо вывести число, являющееся максимальным действительным числом, встречающимся среди символов этой строки
Решение задачи: «Найти в строке запись максимального действительного числа»
textual
Листинг программы
var s: string;
a, max: extended;
i, j, k, err: integer;
f: boolean;
begin
f := false;
writeln('Введите строку:');
readln(s);
for i := 1 to length(s) do
if s[i] in ['0'..'9']
then begin
f := true;
val(s[i], max, err);
k := i;
break;
end;
if f
then begin
for i := k to length(s) do
for j := i to length(s) do
begin
val(copy(s, i, j - i + 1), a, err);
if (err = 0) and (a > max) then max := a
end;
write('Максимальное найденное число: ', max);
end
else write('Числа не найдены');
readln
end.
Объяснение кода листинга программы
- Объявление переменных:
s(тип: строка) - для хранения введенной строки.a(тип: extended) - для хранения текущего числа из строки.max(тип: extended) - для хранения максимального найденного числа.i,j,k,err(тип: integer) - для использования в циклах и хранения информации об ошибке.f(тип: boolean) - для установки флага об успешном нахождении числа в строке.
- Установка значения флага:
- Устанавливаем значение переменной
fвfalse.
- Устанавливаем значение переменной
- Ввод строки:
- Выводим на экран текст
Введите строку:. - Считываем введенную строку в переменную
s.
- Выводим на экран текст
- Поиск и анализ чисел в строке:
- Проходим по каждому символу строки (от первого до последнего).
- Если текущий символ является цифрой, то:
- Устанавливаем флаг
fвtrue. - Преобразуем символ в число и сохраняем его в переменной
max. - Запоминаем позицию символа в переменной
k. - Прерываем цикл.
- Проходим по каждому символу строки (от первого до последнего).
- Поиск максимального числа:
- Если флаг
fустановлен вtrue, то:- Проходим по каждой подстроке начиная с позиции
kдо конца строки. - Проходим по каждому символу в текущей подстроке.
- Конвертируем подстроку в число и сохраняем его в переменной
a. - Если конвертация прошла успешно и текущее число больше, чем
max, то обновляемmax.
- Конвертируем подстроку в число и сохраняем его в переменной
- Выводим сообщение о максимальном найденном числе, если оно было найдено.
- Проходим по каждой подстроке начиная с позиции
- Иначе выводим сообщение
Числа не найдены.
- Если флаг
- Ожидание ввода перед закрытием программы:
- Ожидаем ввода перед завершением программы. Здесь предполагается, что код написан на языке Pascal.