Ho il vettore composto dai numeri
10 22 11 44 10 33 55
Con il select sort viene modificato in qst modo:
10 10 22 44 33 55.
Adesso 33 dovrebbe stare al posto di 44 e non capisco xké.
main.cpp
#include "header.h"
int main(int argc, char *argv[])
{ vettore v1, v2, v3;
int n1, n2, n3;
char c1[]="file1.txt";
char c2[]="file2.txt";
char c3[]="file3.txt";
leggiDaFile( v1, n1, c1);
leggiDaFile( v2, n2, c2);
leggiDaFile( v3, n3, c3);
stampaVettore( v1, n1);
stampaVettore( v2, n2);
stampaVettore( v3, n3);
selectSort( v1, n1);
selectSort( v2, n2);
selectSort( v3, n3);
stampaVettore( v1, n1);
system("PAUSE");
return EXIT_SUCCESS;
}
header.h
#ifndef HEADER_H
#define HEADER_H
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
typedef int vettore[100];
void leggiDaFile(vettore , int &, char *);
void stampaVettore(vettore , int);
void selectSort(vettore , int );
#endif
header.cpp
#include "header.h"
void leggiDaFile(vettore v, int &n, char *c){
fstream f;
f.open( c, ios::in);
if(!f) cout<<"Impossibile leggere il file\n";
else{int i=0;
while(!f.eof()){
f>>v[i];
i++;
n++;
}n=i;
}f.close();
}
void stampaVettore(vettore v, int n){
cout<<"Il vettore e'\n";
for(int i=0; i<n; i++){
cout<<"v["<<i<<"]: "<<v[i]<<endl;
}
}
void selectSort(vettore v, int n)
{
for(int i=0; i<n-1; i++)
{
int min=v[i];
int pos=i;
for (int j=i+1; j<n; j++)
{
if (min>v[j])
{
min=v[j];
pos=j;
}
if (pos!=i)
{
int app=v[pos];
v[pos]=v[i];
v[i]=app;
}
}
}
}