Esercizio su Vettore con funzioni di caricamento casuale, utilizzo di direttiva MACRO, media dei numeri inseriti e conteggio di zero - pari e dispari nel vettore.
Codice:
#define dimensione 100 //direttiva MACRO
#include<stdio.h>
#include<stdlib.h>
#include<time.h> //libreria per funzione random
float media(int v[], int dim); //prototipo funzione per calcolare la media dei numeri inseriti nel vettore
int vettore[dimensione]; //dichiarazione vettore di interi di dimensioni pari alla direttiva "dimensione"
void Carica (int v[], int dim); //prototipo funzione per caricare input interi utente nel vettore
float risMedia; //dichiaraqzione variabile float
int zero(int v[], int dim); //prototipo funzione per contare quanti sono i valori ZERO inseriti nel vettore
int risZero; //variabile che intercetta risultato funzione zero
int pari(int v[], int dim); //prototipo funzione per contare quanti sono i valori PARI inseriti nel vettore
int risPari; //variabile che intercetta risultato funzione pari
int dispari(int v[], int dim); //prototipo funzione per contare quanti sono i valori DISPARI inseriti nel vettore
int risDispari; //variabile che intercetta risultato funzione dispari
int main()
{
srand(time(0)); //generazione del seme tramite orologio computer
printf("Esercitazione vettore\n");
Carica(vettore,dimensione); //chiamata a procedura per caricare vettore in modo casuale - con passaggio parametri vettore e dimensione
for(int i=0; i<dimensione; ++i) //ciclo FOR per stampa vettore
printf("%d\t",vettore[i]);
risMedia=media(vettore,dimensione); //chiamata funzione media con assegnazione risultato a variabile risMedia - con passaggio parametri vettore e dimensione
printf("\nLa media dei numeri caricati e': %.2f",risMedia); //visualizzazione media
risZero=zero(vettore,dimensione); //chiamata funzione zero con assegnazione risultato a variabile risZero - con passaggio parametri vettore e dimensione
risPari=pari(vettore,dimensione); //chiamata funzione pari con assegnazione risultato a variabile risPari - con passaggio parametri vettore e dimensione
risDispari=dispari(vettore,dimensione); //chiamata funzione dispari con assegnazione risultato a variabile risDispari - con passaggio parametri vettore e dimensione
printf("\nIl vettore contiene %d volte ZERO, %d numeri PARI e %d numeri DISPARI",risZero,risPari,risDispari); //visualizzazione contatore Zero,Pari,Dispari
}
void Carica(int v[], int dim) //procedura per caricare vettore - con passaggio parametri vettore e dimensione
{
int i; //indice per ciclo FOR
for(i=0;i<dim;++i) //ciclo FOR per inserimento valori in vettore
{
v[i]=rand()%100;
}
}
float media(int v[],int dim) //funzione per calcolare media dei numeri inseriti in vettore - con passaggio parametri vettore e dimensione
{
int i; //indice per ciclo FOR
float m=0; //variavile locale per effettuare media
for(i=0;i<dim;++i)
{
m=m+v[i]; //somma ad m tutti i valori contenuti nel vettore
}
m=m/dim; //divide m per la dimensione del vettore per calcolare media
return m; //restituisce valore m
}
int zero(int v[],int dim) //funzione per contare numeri zero inseriti in vettore - con passaggio parametri vettore e dimensione
{
int i; //indice per ciclo FOR
int zero=0; //variavile locale per contatore 0
for(i=0;i<dim;i++)
{
if(v[i]==0) //se il valore della cella del vettore e' zero
zero++; //incrementa il contatore zero
}
return zero; //restituisce valore contatore zero
}
int pari(int v[],int dim) //funzione per contare numeri pari inseriti in vettore - con passaggio parametri vettore e dimensione
{
int i; //indice per ciclo FOR
int pari=0; //variabile locale per contatore pari
for(i=0;i<dim;i++)
{
if(((v[i]%2)==0)&&(v[i]!=0)) //se il valore della cella del vettore e' divisibile per 2 ed anche diverso da 0
pari++; //incrementa contatore pari
}
return pari; //restituisce valore contatore pari
}
int dispari(int v[],int dim) //funzione per contare dispari inseriti in vettore - con passaggio parametri vettore e dimensione
{
int i; //indice per ciclo FOR
int dispari=0; //variabile locale per contatore dispari
for(i=0;i<dim;i++)
{
if((v[i]%2)!=0) //se il valore della cella del vettore NON e' divisibile per 2
dispari++; //incrementa contatore dispari
}
return dispari; //restituisce valore contatore dispari
}