#include <cstddef> // size_t
#include <cstring> // strrchr
#include <iostream>
#include <cctype>
using namespace std;
// Особое значение координаты -- "не позиция".
size_t const NPOS = -1;
// Позиция в тексте: номер строки и колонки (позиция в строке).
struct Text_position
{
size_t line = NPOS; // по умолчанию -- не позиция.
};
// Проверка на равенство позиций в тексте (используется в тесте):
inline bool operator==(Text_position const & a, Text_position const & b)
{
return a.line == b.line;
}
// ...и на неравенство:
inline bool operator!=(Text_position const & a, Text_position const & b)
{
return !(a == b);
}
// Определить количество строк в тексте.
size_t text_size(char const * const * text)
{
size_t size = 0;
while (*text++)
++size;
return size;
}
// Решение задачи: поиск наибольшего числа в тексте.
Text_position find_the_largest_number(char const * const * text)
{
size_t number = -1;
// Идём с начала текста.
char max = 0;
for (size_t line = 0; line < text_size(text); line++)
for (size_t column = 0; column < strlen(text[line])-1 ; column++)
if (isdigit(*text[column]))
if (*text[column] > max)
{
max = *text[column];
number = line;
}
if (number != -1)
return {(number)};
return {}; // будет { NPOS } -- символ не найден.
}
int test_find_the_largest_number()
{
char const * const text[]
{
"A l5ne",
"An1ot978her line",
"!@#$^!%",
" ",
"Abcd 19921344",
nullptr
};
if (find_the_largest_number(text) != Text_position{ 3 })
return 1;
if (find_the_largest_number(text) == Text_position{ 2 })
return 2;
if (find_the_largest_number(text) != Text_position{ 1 })
return 3;
if (find_the_largest_number(text) == Text_position{ 4 })
return 4;
return 0;
}
int main()
{
cout << "test find_the_largest_number (should write 0): ";
cout << test_find_the_largest_number();
return 0;
}
В коде много "странностей", но основная ошибка в том, что в функции поиска вы почему-то обращаетесь к text[column]. Это, разумеется, совершенно не правильно. text - это массив размера text_size(text) (5 в вашем примере) и обращаться к нему нужно по индексу line. У вас же происходит вылет за пределы массива.
Обращение к символам текста, согласно вашей задумке, должно выглядеть как text[line][column]. А у вас, по какой-то непонятной причине, используется *text[column]. Почему вдруг *text[column]?
Также не понятно, почему цикл column итерирует до strlen(text[line])-1, а не до strlen(text[line]). Почему вдруг -1?
Также, в заголовке вопроса сказано, что необходимо найти запись максимального числа. Ваш код даже не пытается этого делать. Ваш код ищет максимальную цифру.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости