Ciao a tutti...
Devo creare un programma che prenda in ingresso un numero massimo di 10 imbarcazioni, con le seguenti informazioni:
-num. matricola (12 caratteri alfanumerici)
-4 variazioni di tensioni (relative non ricordo a cosa, ma non credo sia rilevante) (float)
-5 rilevazioni di temperatura (float)
Se le imbarcazioni da registrare sono meno di 10, il programma smette di registrarle quando viene inserito come numero di matricola "0"...
Fin qui non ho riscontrato nessun errore...
Dopo aver fatto questo, chiede di calcolare attraverso una funzione, per ogni imbarcazione la media delle temperature rilevate..
Io sono fermamente convinto di aver agito nel modo corretto, e quindi non sono riuscito a trovare l'errore; in pratica somma soltanto le prime 4 temperature, trascurando l'ultima, e poi divide normalmente per 5, ottenendo naturalmente un valore errato della media..
Ovviamente per rendervi il tutto più comprensibile, vi allego il codice:
codice:
#include <stdio.h>
struct nave {
char matr[12];
float V[3];
float T[4];
};
float media (struct nave);
main () {
struct nave nav[9];
int i, n, x;
float m;
for (i=0; i<=9; i++) {
printf("\n\nImbarcazione n.%d:\n", i+1);
printf("Inserisci n. matricola: ");
scanf ("%s", nav[i].matr);
if (!strcmp("0",nav[i].matr)) break;
for (n=0; n<=3;n++) {
printf("Tensione n.%d: ", n+1);
scanf ("%f", &nav[i].V[n]);
}
for (n=0; n<=4;n++) {
printf("Temperatura n.%d: ", n+1);
scanf ("%f", &nav[i].T[n]);
}
}
printf("\n\n\n");
for (x=0; x<i; x++) {
printf ("media temperature imbarcazione n. %d matr. %s: ", x+1, nav[x].matr);
m= media(nav[x]);
printf("%f\n\n", m);
}
system ("PAUSE");
}
float media (struct nave nav) {
int i;
float n;
n=0.0;
for (i=0;i<=4;i++) n=n+nav.T[i];
n=n/5.0;
return n;
}
Grazie anticipatamente.