Ragazzi devo fare il quicksort per ordinare caratteri ecco il codice:
codice:
#include <cstdlib>
#include <iostream>
#include <time.h>
using namespace std;
typedef char tvettchar[100];
void acquisiscivett(tvettchar &vc, int &N){
int I;
do{
cout<<"Inserisci quanti caratteri inserire: ";
cin>>N;
}while((N<1)||(N>100));
for(I=0;I<N;I++){
cout<<"Inserisci il "<<I+1<<char(248)<<" carattere: ";
cin>>vc[I];
}
}
void visualizzavett(tvettchar vc, int N){
int I;
for(I=0;I<N;I++){
cout<<I+1<<char(248)<<" carattere: "<<vc[I]<<endl;
}
}
void scambia(char &A, char &B){
char aiuto = A;
A = B;
B = aiuto;
}
void quicksort(tvettchar &vc, int inf, int sup){
int I,J;
char centro;
srand(time(NULL));
if (inf<sup) {
// Partenza: i parte dal primo elemento del vettore, j dall'ultimo
I = inf; J = sup;
// Il centro è l'elemento medio del vettore
centro = rand() % ;// cosa devo mettere qui per il random di un carattere presente nel vettore??
do{
// Finché l'elemento generico i-esimo a sinistra del centro
// è minore del centro, incrementa i
if(vc[I] < vc[centro])
I++;
else
// Finché l'elemento generico j-esimo a destra del centro
// è maggiore del centro, decrementa j
if(vc[J] > vc[centro])
J--;
else
// Altrimenti, scambia tra loro l'elemento i-esimo e quello j-esimo
if(I <= J) {
scambia(vc[I],vc[J]);
I++, J--;
}
} while (I <= J); // Cicla finché i e j non si incontrano
// Richiama il quick sort sul primo sottovettore
quicksort(vc,inf,J);
// Richiama il quick sort sul secondo sottovettore
quicksort(vc,I,sup);
}
}
int main()
{
tvettchar vc;
int N;
acquisiscivett(vc,N);
quicksort(vc,0,N-1);
visualizzavett(vc,N);
system("PAUSE");
return EXIT_SUCCESS;
}
cosa metto per randomizzare il carattere??