Exit value:0, ma non mi da risultati in output

di il
1 risposte

Exit value:0, ma non mi da risultati in output

Allora ho scritto questo programma, non mi da nessun errore, ma non mi da nessun risultato nel file di testo di output, qualcuno riesce a capire quale sia il problema?
file.h:

#include <string>
#include <list>
using namespace std;
const int MAX_DIM=100;
class Studente{
private:
      string nome;
      string cognome;
      string matricola;
      list<int> esami;
public:
      Studente();
      Studente (const Studente& s);
	  bool operator==(const Studente &s)const;

      friend ostream& operator<<(ostream &os, const Studente &s);
      friend istream& operator>>(istream &is, Studente &s);

      // Funzioni SET
      void setNome(const string n){nome=n;}
      void setCognome(const string c){cognome=c;}
      void setMatricola(const string m){matricola=m;}

      // Funzioni GET
      string getNome()const {return nome;}
      string getCognome()const {return cognome;}
      string getMatricola()const {return matricola;}
      int getNesami(){return esami.size();}

      // Altre Funzioni
      void addEsame(int v);   // aggiunge  un nuovo esame (voto) alla lista degli esami
      void clear();            // Svuota la lista dei redditi

};
file.cpp:

Studente::Studente(){
nome="";
cognome="";
matricola="";
list<int> esami (MAX_DIM);
}
Studente::Studente (const Studente& s){
	nome=s.getNome();
	cognome=s.getCognome();
	matricola=s.getMatricola();
	esami=s.esami;
}
bool Studente::operator==(const Studente &s)const{
if (matricola==s.matricola)
	return true;
	else return false;
}
ostream& operator<<(ostream &os, const Studente &s){
	os<<s.nome<<",";
	os<<s.cognome<<",";
	os<<s.matricola<<",";
	os<<s.esami.size()<<" ";
	list<int>::const_iterator it;
	for(it=s.esami.begin(); it!=s.esami.end(); ++it){
		os<<" "<<*it;
	}
	os<<endl;
	return os;
}
istream& operator>>(istream &is, Studente &s){
	int tmp,n;
	getline(is,s.nome,',');
	getline(is,s.cognome,',');
	getline(is,s.matricola,',');
	is>>n;
	s.esami.clear();
	for(int i=0; i<n; i++){
		is>>tmp;
		s.esami.push_back(tmp);
	}
	is.ignore();
	return is;
}
void Studente::addEsame(int v){
	esami.push_back(v);
}
void Studente::clear(){
	esami.clear();
}
main.cpp:

#include <iostream>
using namespace std;
#include "studente.h"
#include <fstream>
#include <map>
#include <cstring>
#include <string>
#include <cstdlib>

ostream & operator<<(ostream &os, const map<string, Studente> &l);
istream & operator>>(istream &is, map<string, Studente> &l);

map<string, Studente> copia(map<string, Studente> const &m1, map<string, Studente> const &m2);
// INPUT: due map m1 ed m2
// OUTPUT: restituisce una nuova map contenente tutti gli elementi di m1 ed m2
int main(){
map<string,Studente> m1,m2,m3;
ofstream o_stream;
ifstream i_stream;

i_stream.open("input1.txt");
if(i_stream)
	i_stream>>m1;
else
	cerr<<endl<<"ERRORE! IMPOSSIBILE APRIRE FILE input1.txt"<<endl;
   exit(EXIT_FAILURE);
   i_stream.close();

i_stream.open("input2.txt");
if(i_stream)
	i_stream>>m2;
 else
  cerr<<endl<<"ERRORE! IMPOSSIBILE APRIRE FILE input2.txt"<<endl;
   exit(EXIT_FAILURE);
   i_stream.close();
cout<<"ciao"<<endl;
 m3=copia(m1,m2);

o_stream.open("output.txt");
if(o_stream)
	o_stream<<m3;
else
	cerr<<endl<<"ERRORE! IMPOSSIBILE APRIRE FILE output.txt"<<endl;
	   exit(EXIT_FAILURE);
	   o_stream.close();

return 0;
}
ostream & operator<<(ostream &os, const map<string, Studente> &l){
	map <string,Studente>::const_iterator it;
	for(it=l.begin(); it!=l.end(); ++it){
		os<<it->second;
	}
	return os;
}
istream & operator>>(istream &is, map<string, Studente> &l){
	Studente tmp;
	string t;
	typedef map <string,Studente>::value_type val;
	while(is>>tmp){
		t=tmp.getMatricola();
		l.insert(val(t,tmp));
		tmp.clear();
	}
	return is;
}
map<string, Studente> copia(map<string, Studente> const &m1, map<string, Studente> const &m2){
	map<string,Studente> tmp;
	typedef map <string,Studente>::value_type val;
	map <string,Studente>::const_iterator it,iter;
	for(it=m1.begin(); it!= m1.end(); ++it){
		tmp.insert(val(it->first,it->second));
	}
	for(iter=m2.begin(); iter!= m2.end(); ++iter){
			tmp.insert(val(iter->first,iter->second));
		}
	return tmp;

}

1 Risposte

  • Re: Exit value:0, ma non mi da risultati in output

    Ma secondo te questa else

    else
    cerr<<endl<<"ERRORE! IMPOSSIBILE APRIRE FILE input1.txt"<<endl;
    exit(EXIT_FAILURE);
    i_stream.close();

    esegue le tre righe che seguono?
Devi accedere o registrarti per scrivere nel forum
1 risposte