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

Объяснение кода листинга программы

  1. Переменная s объявлена как строка (String).
  2. Переменные i, m и t объявлены как целые числа (Integer).
  3. В цикле repeat считывается строка с помощью функции ReadLn(s). Если строка пустая, то цикл прерывается с помощью оператора Break.
  4. В цикле for перебираются все символы строки s.
  5. Проверяется, является ли текущий символ цифрой от 0 до 9 с помощью условия s[i] in ['0'..'9']. Если да, то переменная t увеличивается на 1.
  6. Если предыдущий символ не был цифрой, то проверяется, была ли предыдущая последовательность из цифр самой длинной с помощью условий if m<t then m:=t; t:=0;. Если да, то переменная m обновляется, чтобы хранить самую длинную последовательность цифр.
  7. После завершения цикла for переменная t обнуляется, чтобы начать поиск новой последовательности цифр.
  8. В конце программы выводится сообщение с помощью функции WriteLn(), содержащее самую длинную последовательность цифр, найденную в строке.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.667 из 5
Похожие ответы