Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - stringhe e array
Forum - C/C++ - stringhe e array

Avatar
sweetema (Normal User)
Rookie


Messaggi: 32
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 13:36
Mercoledì, 28/01/2009
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;
    }

    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;


}

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 4:56
Giovedì, 29/01/2009


Il mio blog: https://piero.dev
PM Quote
Avatar
sweetema (Normal User)
Rookie


Messaggi: 32
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 9:33
Giovedì, 29/01/2009
.....in realtà non cho capito mlt....help:d

PM Quote
Avatar
gioser (Normal User)
Pro


Messaggi: 111
Iscritto: 03/10/2008

Segnala al moderatore
Postato alle 13:02
Giovedì, 29/01/2009
Testo quotato

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

  1. std::string a[10];




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

Codice sorgente - presumibilmente C/C++

  1. char a[10][100];



o

Codice sorgente - presumibilmente C/C++

  1. char *a[10];



e poi dichiarare dinamicamente ogni singola stringa con

Codice sorgente - presumibilmente C/C++

  1. a[i] = new char[100];



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


PM Quote
Avatar
sweetema (Normal User)
Rookie


Messaggi: 32
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 14:49
Giovedì, 29/01/2009
: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...:(

PM Quote
Avatar
sweetema (Normal User)
Rookie


Messaggi: 32
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 15:18
Sabato, 31/01/2009
raga grazie 1000...ho risolto il prob!!!!!lascio il codice per ki vorrebbe usarlo....
Codice sorgente - presumibilmente C#

  1. #include<iostream.h>
  2. #include<stdlib.h>
  3. #include<cstring>
  4.  
  5.  
  6. char *a[10];
  7. int strcmp(char,char);
  8.  
  9.  
  10.  
  11. void exchange(char*a[],int x,int y)
  12. {
  13.    char* temp =a[x];
  14.    a[x] = a[y];
  15.  
  16.    a[y] = temp;
  17. }
  18.  
  19.  
  20.  
  21. int main()
  22. {
  23.         cout<<"QUESTO PROGRAMMA ORDINA IN ORDINE ALFABETICO\nLE STRINGHE IMMESSE DALL'UTENTE\n\n";
  24.  
  25.         for(int h=0;h<10;h++)
  26.         {
  27.                 a[h]=new char[100];
  28.         }
  29.  
  30.         for(int i=0;i<10;i++)
  31.         {
  32.                 cout<<"inserire una parola\n";
  33.                 cin>>a[i];
  34.  
  35.         }
  36.  
  37.  
  38.         for(int t = 0; t < 10; ++t)
  39.            {
  40.               for(int s = 10-1; s >= t+1; s--)
  41.                  if(strcmp(a[s-1], a[s]) == 1) exchange(a, s, s-1);
  42.  
  43.            }
  44.  
  45.  
  46.  
  47.         for(int j=0;j<10;j++)
  48.                 {
  49.                         cout<<j<<"\t"<<a[j]<<"\n";
  50.                 }
  51.  
  52.  
  53. return 0;
  54.  
  55.  
  56. }

:D

PM Quote
Avatar
gioser (Normal User)
Pro


Messaggi: 111
Iscritto: 03/10/2008

Segnala al moderatore
Postato alle 14:04
Lunedì, 02/02/2009
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

  1. delete [] a[i];


PM Quote
Avatar
sweetema (Normal User)
Rookie


Messaggi: 32
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 14:13
Lunedì, 02/02/2009
graziee;)

PM Quote