Дан массив строк. Найти наибольшее количество цифр, идущих в нем подряд - Turbo Pascal
Формулировка задачи:
В общем, есть массив строк, вводимый вручную, есть идеи как сделать поиск по всему массиву, а не по одной строке?
Например, у приведенного ниже кода такое:
Vvedite kolichestvo strok
2
Vvedite stroku nomer 1
ohj33333
Vvedite stroku nomer 2
111thhgh
выводит
5 cifri
Надо, чтобы выводило не 5, а 8. Как посчитать оставшиеся и идущие следующими единицы после троек?
Есть идеи как заменить длину строки на что-то другое? В мыслях было объединить строки и посчитать у итоговой строки, но не могу найти объединение нескольких строк, конечное число которых неизвестно (цикл).
Кажется, получилось:
Работает как надо, ввод реализован до двойного нажатия Enter, чем не строки? Считает как надо!
В строчках:
itfgogh555
777yjhyujhu
скажет, что подряд идет 6 цифр.
Есть что упростить здесь? Код дико нубский, надо бы в более красивый чтоли вид привести... Ну же, народ, я же не прошу с нуля написать программу и всё за меня сделать, как это делают многие, сам стараюсь, как видите, хоть и не очень умело.
Решение задачи: «Дан массив строк. Найти наибольшее количество цифр, идущих в нем подряд»
textual
Листинг программы
var s: String; i, m, t: Integer; begin repeat ReadLn(s); if s='' then Break; for i:=1 to Length(s) do if s[i] in ['0'..'9'] then Inc(t) else begin if m<t then m:=t; t:=0; end; until False; WriteLn('Самая длинная последовательность цифр: ',m); end.
Объяснение кода листинга программы
- Переменная
s
объявлена как строка (String
). - Переменные
i
,m
иt
объявлены как целые числа (Integer
). - В цикле
repeat
считывается строка с помощью функцииReadLn(s)
. Если строка пустая, то цикл прерывается с помощью оператораBreak
. - В цикле
for
перебираются все символы строкиs
. - Проверяется, является ли текущий символ цифрой от 0 до 9 с помощью условия
s[i] in ['0'..'9']
. Если да, то переменнаяt
увеличивается на 1. - Если предыдущий символ не был цифрой, то проверяется, была ли предыдущая последовательность из цифр самой длинной с помощью условий
if m<t then m:=t; t:=0;
. Если да, то переменнаяm
обновляется, чтобы хранить самую длинную последовательность цифр. - После завершения цикла
for
переменнаяt
обнуляется, чтобы начать поиск новой последовательности цифр. - В конце программы выводится сообщение с помощью функции
WriteLn()
, содержащее самую длинную последовательность цифр, найденную в строке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д