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

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp(("C++")) -.-> cpp/ControlFlowGroup(["Control Flow"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp/BasicsGroup -.-> cpp/variables("Variables") cpp/BasicsGroup -.-> cpp/data_types("Data Types") cpp/BasicsGroup -.-> cpp/operators("Operators") cpp/BasicsGroup -.-> cpp/arrays("Arrays") cpp/ControlFlowGroup -.-> cpp/conditions("Conditions") cpp/ControlFlowGroup -.-> cpp/for_loop("For Loop") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/user_input("User Input") subgraph Lab Skills cpp/variables -.-> lab-96118{{"Поиск строки с наибольшим количеством четных чисел в двумерном массиве"}} cpp/data_types -.-> lab-96118{{"Поиск строки с наибольшим количеством четных чисел в двумерном массиве"}} cpp/operators -.-> lab-96118{{"Поиск строки с наибольшим количеством четных чисел в двумерном массиве"}} cpp/arrays -.-> lab-96118{{"Поиск строки с наибольшим количеством четных чисел в двумерном массиве"}} cpp/conditions -.-> lab-96118{{"Поиск строки с наибольшим количеством четных чисел в двумерном массиве"}} cpp/for_loop -.-> lab-96118{{"Поиск строки с наибольшим количеством четных чисел в двумерном массиве"}} cpp/output -.-> lab-96118{{"Поиск строки с наибольшим количеством четных чисел в двумерном массиве"}} cpp/user_input -.-> lab-96118{{"Поиск строки с наибольшим количеством четных чисел в двумерном массиве"}} end

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

Мы создадим новый файл с именем 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++, которая находит строку в двумерном массиве, содержащую наибольшее количество четных чисел. Мы добились этого, создав набор переменных и используя циклы для перебора элементов массива. Мы использовали условные операторы для вывода результатов программы.