Salve a tutti devo fare un semplice programma devo prendere da file i nomi i cognomi e gli stipendi di professori e capire chi tra questi è quello più alto.
Questo è il mio file text:
Carlo Alberti 1500
Franco De rossi 2000
Alberto Ferrante 5200
Sandro Sandri 3000
Queste sono le mie librerie :
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <cstring>
#define STR_MAX 100
#define DIM_MAX 100
using namespace std;
typedef char Stringa [STR_MAX];
typedef struct{
int Stipendio;
Stringa Nome;
Stringa Cognome;
}Professori;
typedef Professori Docenti[DIM_MAX];
void carica_stipendi(Stringa, fstream &f, int *, Docenti );
void stampa_stipendi(const Docenti ,int );
void confronta_stipendi(const Docenti,int ,Professori);
Queste sono le mie funzioni:
#include"impiegatlib.h"
void carica_stipendi(Stringa name, fstream &f, int *size, Docenti prof){
int i=0;
cout<<"\nScrivi il nome del file che vuoi aprire: ";
cin.getline(name,STR_MAX-1,'\n');
f.open(name,ios::in);
if(!f) {
cout<<"\nErrore durante l'apertura del file...";
exit(1);
}
else{
while(!f.eof()){
f>>prof[i].Nome;
f>>prof[i].Cognome;
f>>prof[i].Stipendio;
i++;
}
i--;
}
*size=i;
f.close();
}
void stampa_stipendi(const Docenti insegnanti,int d){
for(int i=0; i<d; i++)
{
cout<<insegnanti[i].Nome<<" "<<insegnanti[i].Cognome<<" "<<insegnanti[i].Stipendio<<endl;
}
cout<<endl;
}
void confronta_stipendi( Docenti professori, int d, Professori max){
for(int i=0; i<d; i++){
if(professori[i].Stipendio>professori[i+1].Stipendio){
max.Nome=professori[i].Nome;/* Quello che vorrei fare e far scorrere questo array di strcut
e passare il valore più alto ad una struct che manterrà il valore più alto e me lo stampa a video */
max.Cognome=professori[i].Cognome;
max.Stipendio=professori[i].Stipendio;
}
cout<<"Il professore con lo stipendio maggiore è: "<<max.Nome<<" "<<max.Cognome<<"\n con uno stipendio di: "<<max.Stipendio<<endl;
}
}
Questo è il mio main:
#include "impiegatlib.h"
int main(){
fstream f;
int dim, size;
Docenti dati;
Professori stipendio_massimo;
Stringa nome_file;
carica_stipendi(nome_file, f, &dim, dati);
stampa_stipendi(dati, dim );
confronta_stipendi(dati, dim, stipendio_massimo);
}