Mi è stato assegnato per impostare un array con punti. Mi è stato detto di ottenere il valore massimo, nella media, e all'interno di questo stesso array, se qualsiasi punto dell'array è il doppio della media, dovrei cout
un "valore anomalo". Finora ho ottenuto i numeri medi e massimi nella matrice. ma non riesco a impostare il programma su cout
come valore anomalo. Invece mi dà un multiplo della media. ecco il programma;Cercando di ottenere un numero all'interno di un array che è il doppio della media
int main()
{
const int max = 10;
int ary[max]={4, 32, 9, 7, 14, 12, 13, 17, 19, 18};
int i,maxv;
double out,sum=0;
double av;
maxv= ary[0];
for(i=0; i<max; i++)
{
if(maxv<ary[i])
maxv= ary[i];
}
cout<<"maximum value: "<<maxv<<endl;
for(i=0; i<max; i++)
{
sum = sum + ary[i];
av = sum/max;
}
cout<<"average: "<<av<<endl;
out = av * 2;
if(ary[i]>out)
{
cout<<"outlier: "<<maxv<<endl;
}
else
{
cout<<"ok"<<endl;
}
return 0;
}
Grazie per aver pubblicato il tuo lavoro! Vedo molte domande sullo stile dei compiti pubblicati qui con solo la domanda e l'aspettativa che la comunità lo risolva per loro. Questo dimostra che ci hai pensato e vorrebbe aiuto su alcuni aspetti del problema. Grazie! –
Vale la pena notare che la riga 'av = sum/max' può essere spostata all'esterno del ciclo.In questo momento stai prima calcolando la media dei primi 1 elementi, poi la media dei primi 2 elementi, poi la media dei primi 3 ... sull'ultima iterazione calcolando la media dei primi 10 elementi (cioè tutti degli elementi), e quindi dopo che il ciclo è finito, si esegue l'ultimo calcolo. – Domenic