/*
Nome: Mario
Cognome: Montanari
Classe: 3AIN
Data: 13/12/2024

Contare i numeri pari e quelli dispari di una Matrice.
*/

#include <iostream>
#include <array>
#include <ctime>
#include <cstdlib>
#include <iomanip>

#define RIGHE 4
#define COLONNE 4
#define MINIMO -9
#define MASSIMO 9

using namespace std;

void riempiMatrice(int matrice[RIGHE][COLONNE], int righe, int colonne);
void stampaMatrice(int matrice[RIGHE][COLONNE], int righe, int colonne);
int contaPari(int matrice[RIGHE][COLONNE], int righe, int colonne);
int contaDispari(int matrice[RIGHE][COLONNE], int righe, int colonne);

int main(void) {
	int matrice[RIGHE][COLONNE];
	int righe = RIGHE;
	int colonne = COLONNE;
	
	riempiMatrice(matrice, righe, colonne);
	
	cout << "Matrice: " << endl;
	stampaMatrice(matrice, righe, colonne);
	
	cout << "I numeri pari sono: " << contaPari(matrice, righe, colonne) << endl;
	cout << "I numeri dispari sono: " << contaDispari(matrice, righe, colonne) << endl;
	
	return 0;
}

void riempiMatrice(int matrice[RIGHE][COLONNE], int righe, int colonne) {
	srand(time(NULL));
	for (int r = 0; r < righe; r++) {
		for (int c = 0; c < colonne; c++) {
			matrice[r][c] = rand() % (MASSIMO - MINIMO + 1) + MINIMO;
		}
	}
}

void stampaMatrice(int matrice[RIGHE][COLONNE], int righe, int colonne) {
	for (int r = 0; r < righe; r++) {
		cout << endl;
		for (int c = 0; c < colonne; c++) {
			cout << setw(5) << matrice[r][c];
		}
		cout << endl;
	}
	cout << endl << endl << endl;
}

int contaPari(int matrice[RIGHE][COLONNE], int righe, int colonne) {
	int contatorePari = 0;
	for (int r = 0; r < righe; r++) {
		for (int c = 0; c < colonne; c++) {
			if (matrice[r][c] % 2 == 0) {
				contatorePari++;
			}
		}
	}
	return contatorePari;
}

int contaDispari(int matrice[RIGHE][COLONNE], int righe, int colonne) {
	int contatoreDispari = 0;
	for (int r = 0; r < righe; r++) {
		for (int c = 0; c < colonne; c++) {
			if (matrice[r][c] % 2 != 0) {
				contatoreDispari++;
			}
		}
	}
	return contatoreDispari;
}