... devi utilizzare un titolo più specifico, tipo: "Ordinare array di stringhe"
inoltre, (sempre come da regolamento) nel titolo bisogna sempre specificare il linguaggio utilizzato, quindi:
"[C++] Ordinare array di stringhe"
n.b. il regolamento lo trovi in rilievo (nella home di questo forum)
----
per il tuo problema:
non ci hai dato molti indizi! ad esempio: puoi utilizzare la classe STRING? e le STL?
se la risposta è [Sì] questo codice dovrebbe andare:
altrimenti ti crei una funzione sort() tutta tua...codice:#include <iostream> #include <string> #include <algorithm> using namespace std; int main() { string v[5]; for(int i=0; i<5; i++) { cout << "inserisci nome " << i+1 << " : "; cin >> v[i]; } sort(v, v+5); for (int i=0; i<5; i++) cout << i+1 << " - " << v[i] << endl; system("pause"); return 0; }
un bubble sort per stringhe:
codice:#include <iostream> using namespace std; void sbsort(char **v, int e) { int i, j; char *t; t = (char*) malloc(20*sizeof(char)); // stringa temporanea che conterrà i nomi da sortare for(i = 0; i < e -1; i++) for(j = i + 1; j < e; j++) if( strcmp(v[i], v[j])==1 ) { strcpy(t, v[i]); strcpy(v[i], v[j]); strcpy(v[j], t); } } int main() { char **v; int e; cout << "quanti elementi vuoi inserire? : "; cin >> e; fflush(stdin); v=(char**)malloc(e*sizeof(char*)); // alloco dinamicamente le righe che conterranno i nomi for(int i=0; i<20; i++) v[i] = (char*) malloc(20*sizeof(char)); // alloco dinamicamente 20 colonne (max 20 caratteri per nome) for(int i=0; i<e; i++) // inserisco i nomi nell'array dinamico { cout << "inserisci nome " << i+1 << " [max. 19]: "; cin.getline(v[i], 20); } sbsort(v, e); // chismo la funzione sbsort() e gli passo l'array e il numero totale di elementi for (int i=0; i<e; i++) // visualizzo gli elementi ordinati A...Z cout << i+1 << " - " << v[i] << endl; for(int i=19; i>0; i--) // libero la memoria free(v[i]); free(v); system("pause"); return 0; }

Rispondi quotando