Поиск строки с наибольшим количеством четных чисел в двумерном массиве

C++Beginner
Практиковаться сейчас

Введение

В этом лабораторном задании мы напишем программу на C++, которая найдет строку в массиве, содержащую наибольшее количество четных чисел. Будем использовать двухмерный массив.

Объявить необходимые переменные

Мы создадим новый файл с именем main.cpp в директории ~/project с помощью следующей команды:

touch ~/project/main.cpp

Начнем с объявления необходимых переменных, которые включают в себя a, n, l, i, j и count.

int a[10][10], n, l, i, j, count = 0;

Получить размер матрицы и номер строки

Далее мы получим размерность матрицы и номер строки от пользователя. Для этого используем функцию cin для получения значений, введенных пользователем.

cout << "Enter matrix size(l * l): ";
cin >> l;
cout << "Enter row number of matrix: ";
cin >> n;

Проверить валидность ввода пользователя

Мы проверим валидность ввода пользователя, проверив, находится ли n в пределах размерности матрицы. Если это не так, мы выведем сообщение об ошибке и выйдем из программы.

if (n < 0 || n > l) {
  cout << "Error: Row exceeds matrix size. Please enter a value > 0 and less than or equal to the size of matrix." << endl;
  exit(0);
}

Получить значения матрицы

Мы будем использовать вложенные циклы for, чтобы получить значения матрицы от пользователя.

cout << "Enter the matrix values: " << endl;

for (i = 1; i <= l; i++) {
  for (j = 1; j <= l; j++) {
    cin >> a[i][j];
  }
}

Найти строку с наибольшим количеством четных чисел

Мы будем использовать цикл for, чтобы пройти по строке и подсчитать количество четных чисел. Если текущее число четное, мы увеличим переменную count.

for (i = 1; i <= l; i++) {
  if (a[n][i] % 2 == 0) {
    count++;
  }
}

Вывести результаты

Мы выведем значения строки и количество четных чисел в этой строке.

cout << "\nRow is given below:\n";

for (i = 1; i <= l; i++) {
  cout << a[n][i] << " ";
}

cout << "\n\nNo. of even numbers in row is: " << count << endl;

Компилировать и запустить программу

Мы скомпилируем программу с использованием компилятора g++ и запустим ее в терминале.

$ g++ main.cpp -o main
$./main
Полный код
#include<iostream>
using namespace std;

int main() {
  int a[10][10], n, l, i, j, count = 0;

  cout << "Enter matrix size(l * l): ";
  cin >> l;
  cout << "Enter row number of matrix: ";
  cin >> n;

  if (n < 0 || n > l) {
    cout << "Error: Row exceeds matrix size. Please enter a value > 0 and less than or equal to the size of matrix." << endl;
    exit(0);
  }

  cout << "Enter the matrix values: " << endl;

  for (i = 1; i <= l; i++) {
    for (j = 1; j <= l; j++) {
      cin >> a[i][j];
    }
  }

  for (i = 1; i <= l; i++) {
    if (a[n][i] % 2 == 0) {
      count++;
    }
  }

  cout << "\nRow is given below:\n";

  for (i = 1; i <= l; i++) {
    cout << a[n][i] << " ";
  }

  cout << "\n\nNo. of even numbers in row is: " << count << endl;

  return 0;
}

Резюме

В этом практическом занятии мы научились реализовывать программу на C++, которая находит строку в двумерном массиве, содержащую наибольшее количество четных чисел. Мы добились этого, создав набор переменных и используя циклы для перебора элементов массива. Мы использовали условные операторы для вывода результатов программы.