Oppure

Loading
28/01/09 12:36
sweetema
ciao, sn un po inesperta in c++...ma tra breve devo dare un esame e mi sto esercitando a fare programmini!!:d:d:d:d
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[i];
    }

    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;


}
aaa
29/01/09 3:56
pierotofy
Un buon punto di partenza... cplusplus.com/reference/clibrary/cstdlib/…
Il mio blog: piero.dev
29/01/09 8:33
sweetema
.....in realtà non cho capito mlt....help:d
aaa
29/01/09 12:02
gioser
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:

std::string a[10];



ma se non avete studiato la "string", potresti fare una cosa del tipo

char a[10][100];


o

char *a[10];


e poi dichiarare dinamicamente ogni singola stringa con

a[i] = new char[100];


per l'algoritmo di ordinamento puoi consultare

it.wikipedia.org/wiki/…

una implementazione facile da fare è la seguente:

it.wikipedia.org/wiki/…

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 :)

aaa
29/01/09 13:49
sweetema
:k: ....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...:(
aaa
31/01/09 14:18
sweetema
raga grazie 1000...ho risolto il prob!!!!!lascio il codice per ki vorrebbe usarlo....
#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++)
	{
		a[h]=new char[100];
	}

	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;


}
:D
aaa
02/02/09 13:04
gioser
Brava!

come miglioramento postresti ancora aggiungere al fondo il rilascio della memoria allocata per le singole stringe.. per capirci, un ciclo che faccia

delete [] a[i];
aaa
02/02/09 13:13
sweetema
graziee;)
aaa