PDA

Visualizza la versione completa : [C] Media valori pari in un vettore


robe92
25-04-2012, 14:20
La traccia questa:
Rappresentare il programma relativo all'algoritmo in grado di:
. acquisire da tastiera elementi interi non nulli che compongono il vettore V (il valore
nullo introdotto da tastiera pone fine all'acquisizione, non al programma, e non
appartiene al vettore acquisito),
. ricercare, in un unico ciclo, la media dei li valori pari del suddetto vettore



#include <stdio.h>
#include <conio.h>
#define max 100
/*PROTOTIPI*/
void input(int v[], int *dim);
double med(int v[], int dim, double *media);
void output(int v[], int dim, double media);
/*FUNZIONE PRINCIPALE*/
main() {
int v[max], dim;
double media;
input(v, &dim);
med(v, dim, &media);
output(v, dim, media);
return 0;
}

void input(int v[], int *dim) {
int val;
*dim=0;
do {
printf("Inserire valore v[%d]: ", *dim);
scanf("%d", &val);
v[(*dim)]=val;
(*dim)++;
}
while((val!=0) && (*dim<max));
if(val==0) (*dim)--;
}

double med(int v[], int dim, double *media) {
int somma=0, m=0, i;
for(i=0;i<dim;i++) {
if(v[i]%2==0) {
somma+=v[i];
m++;
}
}
*media=somma/m;
}

void output(int v[], int dim, double media) {
int i;
printf("\nVettore\n");
for(i=0;i<dim;i++) {
printf("%d ", v[i]);
}
printf("\n\nLa media dei valori pari: %d\n", media);
}


Quando lo faccio partire mi restituisce come media sempre 0, come mai?
Mi spieghereste cosa sbaglio?
Vi ringrazio

YuYevon
25-04-2012, 16:29
Stai stampando un double (la media) con il codice di formato %d. Devi usare %lf.

robe92
25-04-2012, 16:45
tipico errore stupido da sbattere la testa contro il muro :D :dh:
grazie

Loading