Ho creato un semplicissimo programma che dopo aver fatto inserire i dati di una struttura, li copia nel file, ed in seguito li ordina, ma solo nella struttura, lasciando il vecchio ordinamento nel file.
Quando vado a leggere da file, leggo come se anche esso fosse stato ordinato ed inoltre il ciclo di uscita va in loop, continuando a stampare dati random.
codice:
#include <iostream>
#include <string.h>
#include <fstream.h>
using namespace std;
class Madre
{
protected:
fstream file;
struct studente
{
char nome[10];
int eta;
}pprova[5];
public:
Madre();
void inserimento();
void lettura();
};
void Madre:: inserimento()
{
file.open("Prova.txt", ios:: app);
int i;
for(i=0;i<2;i++)
{
cout << "Inserisci il " << i+1 << "^ nome ";
cin >> pprova[i].nome;
cout << "Inserisci la " << i+1 << "^ eta ";
cin >> pprova[i].eta;
cout << endl;
file << pprova[i].nome << " " << pprova[i].eta;
}
if(strcmp(pprova[0].nome, pprova[1].nome) > 0)
{
pprova[3] = pprova[0];
pprova[0] = pprova[1];
pprova[1] = pprova[3];
}
for(i=0;i<2;i++)
cout << "Dati " << i+1 << "^ persona:\n" << "Nome: " << pprova[i].nome << "\nEta: " << pprova[i].eta << "\n\n";
file.close();
}
void Madre:: lettura()
{
file.open("Prova.txt", ios:: in);
cout << "\n\nVisualizzazione file:\n";
int i=0;
while(!file.eof())
{
file >> pprova[i].nome >> pprova[i].eta;
cout << pprova[i].nome << " " << pprova[i].eta << endl;
i++;
system("PAUSE");
}
file.close();
}
int main()
{
Madre a;
a.inserimento();
system("PAUSE");
a.lettura();
}