School-Coding-Cpp/sfusi/eliminaElementiDispari.txt

66 lines
3.3 KiB
Plaintext

/*
Cognome, Nome: Montanari, Mario
PROGRAMMA CHE, DATO UN ARRAY CONTENENTE 10 VALORI GENERATI CASUALMENTE, ELIMINA GLI ELEMENTI DISPARI DELL'ARRAY.
*/
#include <iostream> // LIBRERIA NECESSARIA PER L'INPUT E L'OUTPUT STANDARD
#include <array> // LIBRERIA NECESSARIA PER LAVORARE CON GLI ARRAY
#include <cstdlib> // LIBRERIA NECESSARIA PER LAVORARE CON LA FUNZIONE 'rand'
#include <ctime> // LIBRERIA NECESSARIA PER LAVORARE CON LA FUNZIONE 'time'
#define CAPACITY 10 // DIMENSIONE MASSIMA DELL'ARRAY
#define SIZE 10 // NUMERO DI CELLE OCCUPATE NELL'ARRAY
#define MIN 1 // VALORE MINIMO PER I NUMERI GENERATI CASUALMENTE
#define MAX 100 // VALORE MASSIMO PER I NUMERI GENERATI CASUALMENTE
using namespace std;
void riempiArray(int arr[], int size); // PROTOTIPO DELLA FUNZIONE CHE RIEMPIE L'ARRAY INIZIALE CON NUMERI CASUALI
void stampaArray(int arr[], int size); // PROTOTIPO DELLA FUNZIONE CHE STAMPA GLI ELEMENTI PRESENTI NELL'ARRAY
int eliminaElementiDispari(int arr[], int size); // PROTOTIPO DELLA FUNZIONE CHE ELIMINA GLI ELEMENTI INDESIDERATI PRESENTI NELLA FUNZIONE INIZIALE
int main(void) {
int arr[CAPACITY]; // DICHIARAZZIONE DELL'ARRAY 'arr[]' CON CAPACITA' MASSIMA DI 10
int size = SIZE; // INIZIALIZZAZIONE DELLA VARIABILE 'size' CHE SPECIFICA IL NUMERO DI ELEMENTI PRESENTI NELL'ARRAY
riempiArray(arr, size); // CHIAMATA DELLA FUNZIONE CHE RIEMPIE L'ARRAY INIZIALE CON NUMERI CASUALI
cout << "Initial array: ";
stampaArray(arr, size); // CHIAMATA DELLA FUNZIONE CHE STAMPA GLI ELEMENTI PRESENTI NELL'ARRAY
size = eliminaElementiDispari(arr, size); // CHIAMATA DELLA FUNZIONE CHE ELIMINA GLI ELEMENTI INDESIDERATI PRESENTI NELLA FUNZIONE
cout << "Final array: ";
stampaArray(arr, size); // CHIAMATA DELLA FUNZIONE CHE STAMPA GLI ELEMENTI PRESENTI NELL'ARRAY
return 0; // TERMINA IL PROGRAMMA
}
// DICHIARAZIONE DELLA FUNZIONE CHE RIEMPIE L'ARRAY INIZIALE CON NUMERI CASUALI
void riempiArray(int arr[], int size) {
srand(time(NULL)); // INIZIALIZZA IL GENERATORE DI NUMERI CASUALI
for (int i = 0; i < size; i++) { // ISTRUZIONE CHE CICLA ATTRAVERSO TUTTE LE CELLE DELL'ARRAY
arr[i] = rand() % (MAX - MIN + 1) + MIN; // GENERA UN NUMERO CASUALE TRA 'MIN' E 'MAX' E LO ASSEGNA ALLA CELLA CORRENTE
}
}
// DICHIARAZIONE DELLA FUNZIONE CHE STAMPA GLI ELEMENTI PRESENTI NELL'ARRAY
void stampaArray(int arr[], int size) {
for (int i = 0; i < size; i++) { // ISTRUZIONE CHE CICLA ATTRAVERSO TUTTI GLI ELEMENTI PRESENTI NELL'ARRAY
cout << arr[i] << " "; // STAMPA OGNI ELEMENTO SEGUITO DA UNO SPAZIO
}
cout << endl; // AGGIUNGE UN A CAPO DOPO LA STAMPA DI TUTTI GLI ELEMENTI
}
// DICHIARAZIONE DELLA FUNZIONE CHE ELIMINA GLI ELEMENTI INDESIDERATI PRESENTI NELLA FUNZIONE INIZIALE
int eliminaElementiDispari(int arr[], int size) {
int j = 0; // INIZIALIZZAZIONE DELLA VARIABILE 'j'
for (int i = 0; i < size; i++) { // ISTRUZIONE CHE CICLA ATTRAVERSO TUTTI GLI ELEMENTI PRESENTI NELL'ARRAY
if (arr[i] % 2 == 0) { // ISTRUZIONE CHE VERIFICA SE L'ELEMENTO CORRENTE E' PARI
arr[j] = arr[i]; // SE L'ELEMENTO E' PARI LO COPIA NELLA POSIZIONE CORRENTE DI 'j'
j++; // INCREMENTA 'j' PER SPOSTARSI ALLA PROSSIMA POSIZIONE LIBERA DELL'ARRAY
}
}
return j; // LA FUNZIONE RESTITUISCE IL NUMERO DI ELEMENTI RIMASTI NELL'ARRAY
}