Массивы в C++ , наименьшее число цифр
Всем привет , у меня есть задание , нужно сделать квадратную символьную матрицу порядка n и определить номер первой по порядку строки, содержащей наименьшее число цифр. Я вроде бы все сделал , но через раз код работает неправильно . Подскажите , что нужно изменить или как можно его просто улучшить. Мне кажется , что ошибка во второй части кода , но где именно , я не знаю. Сам код :
#include <iostream>
using namespace std;
int main()
{
int const n = 5;
int chars [n][n];
srand(time(NULL));
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
chars[i][j] = rand() % 100;
cout << chars[i][j] << " ";
}
cout << endl;
}
cout << endl;
int row = 0;
int countRow = 0;
int countCol = 0;
for(int j = 0; j < n; j++)
{
for(int i = 0; i < n; i++)
{
// ascii коды на цифры 48-57
if(chars[i][j] > 47 && chars[i][j] < 58 ) countCol++;//
}
if(countRow < countCol)///
{ countRow = countCol; row = j; }//
countCol = 0;
}
cout << "row number: " << row << endl; // строки индексируются с 0
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Вторая часть пишется примерно так (не компилировал, писал прямо в ответ):
int count = n*10, row = 0;
for(int i = 0; i < n; i++)
{
int sum = 0;
for(int j = 0; j < n; j++)
{
int a = abs(chars[i][j]);
if (a == 0) sum += 1;
else
while(a) { sum++; a/=10; }
}
if (count > sum)
{
count = sum;
row = i;
}
}
cout << row << endl;
Считаете по строкам количество цифр, находите наименьшее...