Дан массив строк. Найти наибольшее количество цифр, идущих в нем подряд - 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(), содержащее самую длинную последовательность цифр, найденную в строке.