Select sort che non funziona

di
Anonimizzato6791
il
1 risposte

Select sort che non funziona

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;
                         }
                   }
         }
}
 

1 Risposte

  • Re: Select sort che non funziona

    Nella selectSort sul secondo for cicli fino a n e non n-1.
    Poi, spiegami perchè definire min e pos... non puoi farne a meno?

    Saluti,
    Max
Devi accedere o registrarti per scrivere nel forum
1 risposte