Другие языки программирования и технологии

Задача по программированию C++

Дана символьная матрица размером 13x18 . Найти номер первой по порядку строки матрицы, содержащей наибольшее количество цифр.
Darth Sidious
Darth Sidious
205
#include <iostream>
using namespace std;
void input(char* v, size_t n) {
for (auto i = 0U; i < n; ++i) cin >> v[i];
}
bool is_digit(char x) {
return x >= '0' && x <= '9';
}
unsigned count(char* v, size_t n) {
auto c = 0U;
for (auto i = 0U; i < n; ++i) if (is_digit(v[i])) ++c;
return c;
}
int main() {
const auto row = 13U;
const auto col = 18U;
char matrix[row][col];
cout << "Input matrix:\n";
for (auto i = 0U; i < row; ++i) input(matrix[i], col);
auto max = 0U;
auto pos = 0U;
for (auto i = 0U; i < row; ++i) {
auto tmp = count(matrix[i], col);
if (tmp > max) {
max = tmp;
pos = i + 1;
}
}
if (pos) cout << "Line: " << pos;
else cout << "Not found!";
cout.put('\n');
system("pause");
}
Георгий Акушин
Георгий Акушин
96 299
Лучший ответ
Виктор Из Астаны Функция `std::isdigit` является элементом стандартной библиоеки. Зачем было изобретать этот велосипед с нуля?
Действительно. Задача. Ну решай
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <iomanip>
#include <ctime>

int main()
{
  const size_t ROWS = 13;
  const size_t COLUMNS = 18;
  std::vector<std::vector<char>> matrix;
  std::vector<int> counters;
  srand(time(NULL));

  for(size_t i = 0; i < ROWS; ++i) {
    std::vector<char> temp;
    for(size_t j = 0; j < COLUMNS; ++j)
      temp.emplace_back(static_cast<char>(rand() % 96 + 31));
      matrix.emplace_back(temp);
      counters.emplace_back(0);
  }

  auto it = counters.begin();
  std::for_each(matrix.begin(), matrix.end(), [&](std::vector<char>& iRow) {
    std::for_each(iRow.begin(), iRow.end(), [&](char jCol) {
      std::cout << std::left << std::setw(2) << jCol;
      if (jCol > 47 && jCol < 58) (*it)++;
    });
    std::cout << std::endl;
    it++;
  });

  auto result = std::max_element(counters.begin(), counters.end());

  std::cout << distance(counters.begin(), result) << std::endl;

  system("pause");
  return 0;
}
Integral Wingateshellsing
Integral Wingateshellsing
3 300
Кирилл Свешников А вас ещё не учили хоть как то код по функциям размазать?) Спагетти - наше все
Виктор Из Астаны 47? 58? Что это за магические константы и что они делают в коде?