[C++] Programma con matrice per trovare temperatura massima

Marina571
salve a tutti, ho un compito Che mi chiede Leggere da file dal file i valori di temperatura registrati ogni giorno per N giorni (5 temperature per giorno) e identificare il giorno in cui avviene la temperatura massima.
Si puo fare con un array o con matrice o senza nessuno dei due. Io son riuscita soltanto a trovare la temperatura massima applicando un array ma non riesco a capire come fare a identificare il giorno in cui avviene? Avete consigli

Risposte
apatriarca
Devi semplicemente memorizzare l'indice (e quindi il giorno) in cui trovi quel valore massimo.

Marina571
Grazie ma mi sa che non sono capece mi proveresti a spiegare come?

apatriarca
Per trovare il massimo suppongo che tu stia iterando sull'array e aggiornando una qualche variabile quando questa sia maggiore del massimo corrente. Sbaglio? Se così fosse è sufficiente definire una nuova variabile che viene aggiornata all'indice corrente quando aggiorni il massimo. Se mostri il codice del tuo tentativo forse è più facile dirti dove sbagli o dove devi aggiungere il codice.

Marina571









Eccolo ho dovuto inviare le foto perche il file non me lo aggiungeva comunque l'ultima parte penso sia completamente sbagliata dato che l ho scritta in fretta.

apatriarca
Scusa ma è un po' difficile leggere il codice così.. Potevi semplicemente incollare il testo all'interno del post. In ogni caso. Dove hai scritto
double Tmax = x[0];
for (int i = 0; i < g; i++) {
    if (x[i] > Tmax) { Tmax = x[i]; }
}

puoi aggiungere una variabile (per esempio Imax) per memorizzare l'indice del massimo. Cioè
double Tmax = x[0];
int Imax = 0;
for (int i = 1; i < g; i++) {
    if (x[i] > Tmax) { Tmax = x[i]; Imax = i; }
}

Marina571
grazie mille per il tuo aiuto però avrei un ultimo problema da risolvere, intanto posto il codice
memorizzando i però mi viene fuori il numero 15 ma dovrei tecnicamente dividerlo per 5 penso perchè sono 10 giorni ognuno con le sue 5 temperature, prima forse ho scritto il contrario.
quindi secondo te basta dividere mem per 5 ? ma quindi dovrei trovare il resto di mem diviso 5 ?
#inclue <fstream>
#include <iostream>
#include <string>
#include <cmath>

using namespace std;

int main(){

  int        n,mem;
  double     x[1000],d;

  string     filename;
  cout << "Inserisci il nome del file " << endl;
  cin >> filename;

  ifstream   ifile;
  ifile.open(filename.c_str());  
  if (!ifile) {
    cout << "Errore nell'apertura del file" << endl;
    return 1;
  }

 
  int i=1;
  ifile>>n;
  int g=n*5;
  while (ifile >> d){ 
    x[i]=d;
    i++;
  }
  double Tmax=x[0];

    for (int i=1;i<g;i++) {
      if (x[i]>Tmax) {Tmax=x[i]; mem=i;}
  }
    cout <<"la temperatura massima è:"<<Tmax << endl;
 cout <<"il giorno in  cui si è registrata la Tmax è:" << mem << endl;
   
  
  ifile.close();

Marina571
"Marina57":
grazie mille per il tuo aiuto però avrei un ultimo problema da risolvere, intanto posto il codice
memorizzando i però mi viene fuori il numero 15 ma dovrei tecnicamente dividerlo per 5 penso perchè sono 10 giorni ognuno con le sue 5 temperature, prima forse ho scritto il contrario.
quindi secondo te basta dividere mem per 5 ? ma quindi dovrei trovare il resto di mem diviso 5 ?
#inclue
#include
#include
#include

using namespace std;

int main(){

int n,mem;
double x[1000],d;

string filename;
cout << "Inserisci il nome del file " << endl;
cin >> filename;

ifstream ifile;
ifile.open(filename.c_str());
if (!ifile) {
cout << "Errore nell'apertura del file" << endl;
return 1;
}


int i=1;
ifile>>n;
int g=n*5;
while (ifile >> d){
x=d;
i++;
}
double Tmax=x[0];

for (int i=1;i if (x>Tmax) {Tmax=x; mem=i;}
}
cout <<"la temperatura massima è:"< cout <<"il giorno in cui si è registrata la Tmax è:" << mem << endl;


ifile.close();



ho risolto pure il fatto di mem/5 però ora il programma che ho fatto mi trova solo un giorno in cui si è registrata la temperature massima e non il secondo in cui c'è la stessa temperatura massima sapete come risolvere?

apatriarca
Dovresti usare un array al posto di una singola variabile e aggiungere valori alla fine di questo array se x == Tmax.

Marina571
Grazie mille per il tuo aiuto!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.