С++ не работает программа, когда вводится более 99 одинаковых чисел
Суть задачи заключается в выведении числа символов введенных друг за другом. То есть: 11111231. Ответ будет 5. Моя программа не выводит ответ, когда введено более 99 одинаковых цифр. То есть : 1111111111..... Ответ будет 1. Помогите пожалуйста сделать так, чтобы программа считала цифры вне зависимости от их количества.
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int i, l = 1, n = 1;
char string[2500];
cout << "Введите числа: ";
cin.get(string, 2500);
char str_len = strlen(string);
for (i = 1; i < str_len; i++)
{
if (string[i] == string[i - 1])
{
l++;
}
else
{
l = 1;
}
if (l > n > 0)
{
n = l;
}
}
cout << "[===============]" << endl;
cout << "Идущих подряд чисел: ";
printf("%d", n);
int count = strlen(string);
cout << endl;
cout << "[===============]" << endl;
cout << "Всего символов в строке: ";
printf("%u\n", count);
return 0;
}
Ответы (1 шт):
Автор решения: DmitryK
→ Ссылка
Скорее всего у вас проблема в другом. Вы длину строки сохраняете в переменной char str_len = strlen(string); Она может хранить значения от -128 до 127. Если длина строки у вас превышает 127 символов, то получается переполнение переменной и UB программы.
Замените на int str_len = strlen(string);.