Ragazzi devo fare il quicksort per ordinare caratteri ecco il codice:
cosa metto per randomizzare il carattere??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; }

Rispondi quotando