Sto provando a svolgere alcuni esercizi presenti nel manuale
mi sono bloccato su un algoritmo, la traccia dice :
dati 3 vettori, con elementi da caricare da 3 file, generare un 4°file che contenga tutti gli elementi dei 3 vettori, ordinati crescentemente, si proceda senza fare uso di un quarto vettore e usando l'algoritmo del selection sort.
ora non so se esiste (evidentemente si) una strada più corta, ma io sto procedendo nel seguente modo:
così mi sono caricato i file nei vettori v1,v2,v3:
#include "func.h"
void inserisciInVettori( vettore & v1, int & r1, vettore & v2, int & r2, vettore & v3 , int & r3 ){
fstream in1, in2, in3;
in1.open("/Users/Genna/Desktop/fondamenti di informatica/file/eser pag 358/f1.txt",ios::in);
in2.open("/Users/Genna/Desktop/fondamenti di informatica/file/eser pag 358/f2.txt",ios::in);
in3.open("/Users/Genna/Desktop/fondamenti di informatica/file/eser pag 358/f3.txt",ios::in);
r1=0;
r2=0;
r3=0;
while(!in1.eof()){
in1>>v1[r1];
r1++;
}
while(!in2.eof()){
in2>>v2[r2];
r2++;
}
while(!in3.eof()){
in3>>v3[r3];
r3++;
}
r1--;
r2--;
r3--;
in1.close();
in2.close();
in3.close();
for (int i=0;i<r1;i++)
cout<<v1[i]<<" ";
cout<<endl;
for (int j=0;j<r2;j++)
cout<<v2[j]<<" ";
cout<<endl;
for (int k=0;k<r3;k++)
cout<<v3[k]<<" ";
cout<<endl;
}
in questa procedura invece sto cercando di capire come fare per ordinare sti benedetti vettori,
avevo pensato di costruire tre cifri for uno dentro l'altro, ma in realtà non ho in testa con che algoritmo finire, sto girando in tondo, ho bisogno di un cosiglio
void calcolo( vettore v1, int r1, vettore v2, int r2, vettore v3 , int r3 ){
ofstream out;
//creo il file di uscita contenente i vettori ordinati
out.open("/Users/Genna/Desktop/fondamenti di informatica/file/eser pag 358/out.txt",ios::app);
int riempimento[3]={r1,r2,r3};
int max = 0;
for (int i=0;i<3;i++)
if (max<riempimento[i])
max=riempimento[i];
cout<<"\nRiempimento massimo : "<<max;
int min=max;
for(int j=0;j<3;j++)
if (min>riempimento[j])
min=riempimento[j];
cout<<"\nRiempimento minimo : "<<min;
cout<<endl;
int med;
//capisco qual'è il riempimento maggiore , medio e minore per i cicli successivi
if((r1 != min) && (r1 !=max)){
med=r1;
if((r2 != min) && (r2 !=max))
med=r2;
if((r3 != min) && (r3 !=max))
med=r3;
//qui iniziano i 3 cicli
for(int M=0;M<max;M++){
for(int me=0;me<med;me++){
for(int m=0;m<min;min++)
{
}
}
}
}
: