Newsgroup: it.comp.lang.c
Titolo: problema per una principiante

Ciao,
sono una principiante al primo stadio:) Ho un problema:
Dato un array di n elementi (stabilisco io quanti ) devo calcolare la media.
Io pensavo di impostarlo così.....
faccio una funzione in cui sommo gli elementi e divido il risultato per un 
int che chiamo lunghezzaarray.
C'è qualcuno buono di cuore che mi scriverebbe la funzione?:)
Ciao
Rossana
_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at 
http://www.hotmail.com
.
-- 
Posted from [147.123.225.49] by way of 
f3.law11.hotmail.com
 [64.4.17.3] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

secondo me dovresti sforzarti a farli da sola gli algoritmi...o almeno
iniziarli,
cmq questo l'ho fatto qualche tempo fa
ciao
/**************************************/
#include<stdio.h>
#include<stdlib.h>
float media(float *a,int n)
{
int i;
float med;
med=0;
for(i=0;i<n;i++)
{ med=med+a[i]/n;}
return(med);
}
main()
{float *a;
int n,i;
float md;
printf("\t MEDIA ARITMETICA\n");
printf("\n di quanti numeri e' la media?\n==>");
scanf("%d",&n);
a=(float*)malloc(n*sizeof(float));
printf("\n bene ora devi inserire i valori di cui vuoi\n calcolare la
media:\n");
for(i=0;i<=n-1;i++)
{ scanf("%f",&a[i]);}
md=media(a,n);
printf("\n ecco qua! la tua media e' %.2f\n",md);
system("pause");
}
/**************************/
--
scambia vanitasvanitatum con greid per rispondere

 ha scritto nel messaggio
news:F38J0sca0Zkfz...@hotmail.com...


 }
Questo codice non calcola la certamente media. Oltretutto l'array a che ti
serve? (credo che calcoli y / 2 + 0.5).


Più veloce se
 float media(float *a,int n)
 {
 int i;
 float med;
 med = 0.0f
 for(i=0;i<n;i++)
      med += a[i];
 return med / n;
 }


--


 [snip]
ancora piu' veloce (forse)
float media ( float *a,int n )
{
  float med=0;
  int   i;
  for( i=n ; i>0 ; i--,a++ )
       med += *a;
  return med / n;
}
ciao
donCiccio

 ha scritto nel messaggio
news:9gqe47$17r$2...@fe1.cs.interbusiness.it...


una tua spiegazione. Grazie
Non ti insospettisce il fatto che in tutta la funzione tu
non usi il parametro "array" che hai ricevuto ?
Come puoi pensare che quella funzione calcoli la media dei
valori dell'array se nemmeno legge il contenuto dell'array ?
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

   for( i=n ; i>0 ; i--,a++ )
vero che un compilatore decente lo fa da solo, ma usare il 
++ prefisso quando non serve il risultato salva un temporaneo ( e in 
C++ per i tipi non built-in non lo fa e puoi perderci molto)


Forse stai donfonendo la media con il mediano ... o non so che cos' altro.

 >  return(total/y);
Scusa ma come puoi dire che calcola la media quando sommi gli indici e non i
valori ?
Alex

 ha scritto nel messaggio
news:7524867.X...@tin.it...

sul C++ mi fido (perche' ho solo una infarinatura generale), ma in C le due
righe:
++a;
a++;
cioe' senza utilizzo del valore di 'a', sono equivalenti, e i pochi
compilatori da me usati, le codificano nello stesso modo.
Nel caso di utilizzo di 'a' c'e' in piu' la copia del valore prima o dopo
l'incremento, ma l'incremento rimane fatto nello stesso modo (ottimizzazioni
escluse).
Mi hanno gia' detto che non devo pensare che quel poco che conosco sia
uguale in tutto il mondo, ma non riesco a farne a meno  :-)
ciao
donCiccio

valori ?
scommetto cha ha fatto una prova con un array del tipo {1, 2, 3, 4...}
se è per questo che ha sbagliato, ne approffitto per consigliare di
eseguire sempre *bene* i test per i propri algoritmi, cercando anche
di trovare quali sono i valori limite per cui magari potrebbe non
funzionare.
Anto
--
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it