Fusione tra due file e ordinamento

di il
4 risposte

Fusione tra due file e ordinamento

Sto cercando di riscrivere un programma che ci fece vedere il professore durante il corso, perché mi sono accorto che il mio è sbagliato in parte,
Il programma chiede di ordinare il contenuto di due file in un terzo file;
Il mio problema è che non ordina perfettamente, ma solo con elementi adiacenti, e se un file è più lungo dell'altro gli ultimi elementi non li ordina
void inserisciInVettore(){

	fstream f1,f2,f3;
	f1.open("/Users/Genna/Desktop/fondamenti di informatica/file/ricerca binaria e marge sort/Untitled/f1.txt",ios::in);
	f2.open("/Users/Genna/Desktop/fondamenti di informatica/file/ricerca binaria e marge sort/Untitled/f2.txt",ios::in);
	f3.open("/Users/Genna/Desktop/fondamenti di informatica/file/ricerca binaria e marge sort/Untitled/f3.txt",ios::out);
	
	if (!f1 || !f2)
		cout <<"ERRORE: FILE NON TROVATO!!! \n";
	else{
		int x,y;
	if (!f1.eof())
		f1 >> x;
	if(!f2.eof())
		f2 >> y;
	while (!f1.eof() && !f2.eof())
	{
		if (x<y)
		{
			f3<<x;
			f1>>x;
		}
		else if (x>y)
		{
			f3<<y;
			f2>>y;
		}
		else
		{
			f3<<y;
			f1>>x;
			f2>>y;
		}
	}
	while (!f1.eof())
	{
		f3<<x;
		f1>>x;
	}
	while (!f2.eof())
	{
		f3<<y;
		f2>>y;
	}
	f1.close ();
	f2. close ();
	f3.close ();
	cout <<"Procedura terminata, andare nella directory del file f3\n";
	}
}

4 Risposte

  • Re: Fusione tra due file e ordinamento

    Questo perche non tieni niente in un array temporaneo. Io leggerei tutti e due i file, ordino e poi scrivo sul 3 File.
  • Re: Fusione tra due file e ordinamento

    Anche io lo farei, ma il programma che ti ho postato è stato fatto dal mio prof durante una lezione, e un mio amico mi ha confermato che è corretto, quindi è assolutamente impossibile ordinare il contenuto di 2 file senza passare per un array?

    logicamente mi sembra ovvio ...
  • Re: Fusione tra due file e ordinamento

    Senza guardare il listato dimmi se questo può essere fatto senza passare per l'array
    
    file 1
    1 5 19 6 2 
    
    file 2
    3 32 0 12 45
    
    nel momento che tu hai letto il numero 1 dal file 1 non sai se nel file 2 c'è un elemento minore ovvero il 0 nella terza posizione. Quindi bisogna leggere tutto e poi ordinare.
  • Re: Fusione tra due file e ordinamento

    Certo, in ogni caso ho mandato una mail al prof per capire a cosa volesse effettivamente fare quel programma (ha perso 45 minuti per spiegarlo)
Devi accedere o registrarti per scrivere nel forum
4 risposte