Salve ho bisogno di un consiglio su una soluzione

di il
1 risposte

Salve ho bisogno di un consiglio su una soluzione

La struttura dati è una lista dinamica dove ogni nodo descrive il nome della località(50 caratteri) la data (aaaa-mm-gg) la temperatura minima e la temperatura massime rilevate nel giorno.
Si scriva una funzione che riceva come parametri una lista chiamata temps ( che descrive le temperature misurate in un periodo, di diverse località), un vettore di caratteri chiamato loc che indica la località, un vettore di caratteri chiamato data_max e un vettore di caratteri denominato nomefile che contiene il nome del file percorso incluso. La funzione cerca il giorno con la temperatura massima più elevata per la località indicata da loc, scrive sul file il cui nome è riportato nel parametro nomefile i dati completi della rilevazione corrispondente, riporta nel vettore data_max la data della rilevazione trovata. La funzione restituisce -1 in caso di errore o mancanza di rilevazioni altrimenti 0.

Questo è il testo dell'esercizio, io ho trovato una pseudo soluzione così:

typedef struct st_rilevazione{

char localit‡[50]:
char data[11];
double temp_min;
double temp_max;

} RILEVAZIONE;

typedef struct st_nodo{

RILEVAZIONE giorno;
st nodo *next;
} NODO;

int TemperaturaMassima ( char loc[], char data_max[], char nomefile[], NODO *temps){

NODO * t1= temps;
NODO *t2;

ofstream file;

file.open(nomefile::out);
if (fout.fail()){
return -1;
}

int max=0;

while (t1!=NULL){
t2=temps;
while(t2!=NULL){
if (strcmp (t2->giorno.localit‡, loc)==0 && t2->giorno.temp_max>max){
max = t2->giorno.temp_max;
t2=t2->next;
}
if (strcmp(t1->giorno.localit‡, loc)==0 && t1->temp_max >=max){
strcpy(t1->giorno.data, data_max);
file<< t1->giorno.localit‡<<endl;
file<<t1->giorno.data<<endl
file<<t1->giorno.temp_min<<endl;
file<<t1->giorno.temp_max<<endl;
}

else return -1;
t1=t1->next;
}

file.close();
return 0;

}
secondo voi può essere fattibile?

1 Risposte

  • Re: Salve ho bisogno di un consiglio su una soluzione

    Se la temperatura massima fosse stata un numero minore di 0? Ti consiglio di memorizzare non la temperatura massima ma l'intero nodo contenente la temperatura massima con un solo ciclo while. Una volta trovato il nodo contenente la tmax e uscito dal ciclo while scrivi su file le rilevazioni contenute nel nodo.Spero di essere stato chiaro.

    Un'altra cosa
    strcpy(t1->giorno.data, data_max);

    Il testo dice di riportare in data_max la data della rilevazione trovata. Quindi bisogna scrivere
    strcpy( data_max,t1->giorno.data);

    in quanto strcpy(destinazione,sorgente)
Devi accedere o registrarti per scrivere nel forum
1 risposte