Найти все парные элементы в двумерном массиве и сложить их - C (СИ)
Формулировка задачи:
Добрый вечер!
Подскажите пожалуйста каким образом можно реализовать следующую задачу.
Необходимо найти все парные элементы в двумерном массиве (т.е. которых только 2) и сложить их.
Массив заполняется случайными числами...
Решение задачи: «Найти все парные элементы в двумерном массиве и сложить их»
textual
Листинг программы
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define M 3
#define N 5
void Init(int *a, int *end)
{
if (a < end)
{
*a = rand() % 10 - 5;
Init(a + 1, end);
}
}
void Print(int a[M][N], int m, int n)
{
int i, j;
for(i = 0; i < m; ++i)
{
for(j = 0; j < n; ++j)
printf("%4d", a[i][j]);
putchar('\n');
}
}
int Count(int *a, int *end, int x)
{
return a < end ? (*a == x) + Count(a + 1, end, x) : 0;
}
int main()
{
int i, a[M][N], sum = 0, count = 0;
srand(time(NULL));
Init(*a, *a + M*N);
Print(a, M, N);
for(i = 0; i < M*N; ++i)
if (Count(*a, *a + M*N, *(*a + i)) == 2)
{
sum += *(*a + i);
++count;
}
printf("count = %d\n", count);
printf("sum = %d\n", sum);
return 0;
}
Объяснение кода листинга программы
В данном коде на языке C решается задача поиска всех парных элементов в двумерном массиве и их суммирования.
- Сначала мы подключаем необходимые библиотеки:
- stdio.h нужна для работы с вводом/выводом;
- stdlib.h нужна для работы с функциями, используемыми для манипуляций с массивами;
- time.h нужна для получения текущего времени, которое мы используем в качестве источника псевдослучайных чисел.
- Затем мы определяем размеры нашего массива:
- M - количество строк;
- N - количество столбцов.
- Далее идут функции:
- Init - инициализирует массив случайными числами;
- Print - выводит массив на экран;
- Count - подсчитывает количество элементов в массиве, равных заданному значению.
- В функции main мы создаем двумерный массив a, инициализируем его, выводим на экран, а затем суммируем все его элементы, равные двум определенным значениям, и подсчитываем их количество.
- В конце функции main мы возвращаем 0, что означает успешное выполнение программы.