sweetema (Normal User)
Rookie
Messaggi: 32
Iscritto: 28/01/2009
|
ciao, sn un po inesperta in c++...ma tra breve devo dare un esame e mi sto esercitando a fare programmini!!
sto scrivendo un programma ke mi permette(dovrebbe xmettermi) di ordinare in ordine alfabetico un elenco di stringhe!!!
ho scritto il codice ma nn parte..xkè?grazie in anticipo...
#include<iostream.h>
#include<stdlib.h>
#include<cstring>
char a[10];
int strcmp(char,char);
int main()
{
cout<<"QUESTO PROGRAMMA ORDINA IN ORDINE ALFABETICO\nLE STRINGHE IMMESSE DALL'UTENTE\n\n";
for(int i=0;i<10;i++)
{
cout<<"inserire una parola";
cin>>a;
}
for(int j=0;j<10;j++)
{
cout<<j<<"\t"<<a[j]<<"\n";
}
for(int next=0;next<10;next++)
{
char insert=a[next];
int moveitem;
moveitem=next;
while((moveitem>0)&&(a[moveitem]>insert))
{
int element;
element=strcmp(a[moveitem],a[moveitem-1]);
if(element==1)
a[moveitem]=a[moveitem-1];
moveitem--;
}
a[moveitem]=insert;
}
for(int t= 0;t<10;++t)
{
cout<<a[t]<<endl;
}
return 0;
}
|
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
|
|
sweetema (Normal User)
Rookie
Messaggi: 32
Iscritto: 28/01/2009
|
.....in realtà non cho capito mlt....help
|
|
gioser (Normal User)
Pro
Messaggi: 111
Iscritto: 03/10/2008
|
Postato originariamente da sweetema:
char a[10];
|
Ciao.
La prima cosa che ho notato è che hai dichiarato un vettore di caratteri di 10 elementi e non un vettore di stringhe.
siccome usi il C++ e non il C, postresti usare un vettore di string:
Codice sorgente - presumibilmente Plain Text |
ma se non avete studiato la "string", potresti fare una cosa del tipo
Codice sorgente - presumibilmente C/C++ |
o
Codice sorgente - presumibilmente C/C++ |
e poi dichiarare dinamicamente ogni singola stringa con
Codice sorgente - presumibilmente C/C++ |
per l'algoritmo di ordinamento puoi consultare
http://it.wikipedia.org/wiki/Algoritmo_di_ordinamento
una implementazione facile da fare è la seguente:
http://it.wikipedia.org/wiki/Bubble_sort
oppure puoi usare la quicksort() della libreria standard, di cui Piero ti ha postato il link alla documentazione.
Un consiglio per quando posti dei pezzi di sorgente: usa il pulsante "code", altrimenti il tuo sorgente viene modificato: ad esempio nel tuo caso si sono persi gli indici "i" tra parentesi quadre.
Ciao
|
|
sweetema (Normal User)
Rookie
Messaggi: 32
Iscritto: 28/01/2009
|
....ho capito il probl di array di caratteri e string...pns di aver risolto xquesto problema!!!ma ora nn so prpr cm fare ad ordinarlo...sono andata sui link..ma non ho capito tnt bn...di fatti non riesco a farlo partire!!!!!scusate...
|
|
sweetema (Normal User)
Rookie
Messaggi: 32
Iscritto: 28/01/2009
|
raga grazie 1000...ho risolto il prob!!!!!lascio il codice per ki vorrebbe usarlo....
Codice sorgente - presumibilmente C# |
#include<iostream.h> #include<stdlib.h> #include<cstring> char *a[10]; int strcmp(char,char); void exchange(char*a[],int x,int y) { char* temp =a[x]; a[x] = a[y]; a[y] = temp; } int main() { cout<<"QUESTO PROGRAMMA ORDINA IN ORDINE ALFABETICO\nLE STRINGHE IMMESSE DALL'UTENTE\n\n"; for(int h=0;h<10;h++) { } for(int i=0;i<10;i++) { cout<<"inserire una parola\n"; cin>>a[i]; } for(int t = 0; t < 10; ++t) { for(int s = 10-1; s >= t+1; s--) if(strcmp(a[s-1], a[s]) == 1) exchange(a, s, s-1); } for(int j=0;j<10;j++) { cout<<j<<"\t"<<a[j]<<"\n"; } return 0; }
|
|
|
gioser (Normal User)
Pro
Messaggi: 111
Iscritto: 03/10/2008
|
Brava!
come miglioramento postresti ancora aggiungere al fondo il rilascio della memoria allocata per le singole stringe.. per capirci, un ciclo che faccia
Codice sorgente - presumibilmente Plain Text |
|
|
sweetema (Normal User)
Rookie
Messaggi: 32
Iscritto: 28/01/2009
|
graziee
|
|