... 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:
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;
}
altrimenti ti crei una funzione sort() tutta tua...
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;
}