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++ - array di caratteri da ordinare alfabeticamente
Forum - C/C++ - array di caratteri da ordinare alfabeticamente

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
:: sara :: (Normal User)
Newbie


Messaggi: 5
Iscritto: 18/07/2007

Segnala al moderatore
Postato alle 18:32
Mercoledì, 18/07/2007
ciao!

come si fa ad ordinare un array di caratteri in ordine alfabetico?!

premetto che i caratteri non comprendono nè numeri nè spazi nè maiuscole...solo semolici lettere minuscole!

mi hanno consigliato di usare sort ma non so come si usa!!!

grazie

PM Quote
Avatar
WARRIOR (Ex-Member)
Guru


Messaggi: 627
Iscritto: 30/03/2007

Segnala al moderatore
Postato alle 20:30
Mercoledì, 18/07/2007
Bhe ipotizzando che un array chiamato ALPHA contenga dei caratteri....facciamo 21, la funzione sort() dovrebbe funzionare in questo modo.

Codice sorgente - presumibilmente Plain Text

  1. sort(ALPHA, ALPHA+21);



Accetta come parametri l'inizio e la fine dell'array.
Correggetemi se sbaglio ;) .

PM Quote
Avatar
andry89mm (Member)
Pro


Messaggi: 128
Iscritto: 21/12/2006

Segnala al moderatore
Postato alle 21:27
Mercoledì, 18/07/2007
Ciao, posso consigliarti di guardare nella sezione Algoritmi di questo forum ; ci sono dei topic che spiegano appunto vari tipi di algoritmi di ordinamento.Sono scritti in pseudo-codifica ma semplici da "portare" in C++ ;
se incontri problemi nel porting chiedi qui.

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 21:28
Mercoledì, 18/07/2007
è giusto è giusto ;-)

Cmq consiglio all'original poster di farsi bene la STL, per chi vuole usare in modo proficuo il C++ senza "rischiare" di mescolare i programmi C++ con funzioni C quando non necessario rendendo tutto più fragilino, bacato e complicato è bene studiarla tutta.

Una documentazione qui: http://www.sgi.com/tech/stl/

ciauz

PM Quote
Avatar
:: sara :: (Normal User)
Newbie


Messaggi: 5
Iscritto: 18/07/2007

Segnala al moderatore
Postato alle 21:29
Mercoledì, 18/07/2007
ok...quindi tu mi stai dicendo di fare una cosa del genere????

int main ()

{
    char stringa_A [10];
    std::cout << "inserisci la stringa da elaborare  ";
    std::cin >> stringa_A;
    
    sort (stringa_A,stringa_A+10);
    std::cout << stringa_A;
    
    system("pause");
    return 0;
    
}



PM Quote
Avatar
WARRIOR (Ex-Member)
Guru


Messaggi: 627
Iscritto: 30/03/2007

Segnala al moderatore
Postato alle 21:50
Mercoledì, 18/07/2007
No, non proprio, così facendo, leggi una COSTANTE STRINGA, che (a meno che non stia sbagliando) risultareà incompatibile ;) .
Prendiamo un esempio simile al precedente.

Codice sorgente - presumibilmente C/C++

  1. int num[2], i; //un array di int
  2. num[0] = 3; //inserisco i numeri in senso inverso
  3. num[1] = 2;    
  4. num[2] = 1;
  5.  
  6. /*
  7. Se stampi l'array con un ciclo,
  8. l'output visualizzarà
  9. 3 2 1
  10. */
  11.  
  12. sort(num,num+2);
  13.  
  14. for(i = 0; i < 3; i++) {
  15. cout << num[i];
  16. }
  17.  
  18. /*
  19. ora il programma scriverà 1 2 3
  20. */



Cmq, segui il consiglio di Matteo, studia bene la Standard template Library :k: è utilissima :k: .

Ultima modifica effettuata da WARRIOR il 18/07/2007 alle 21:53
PM Quote
Avatar
:: sara :: (Normal User)
Newbie


Messaggi: 5
Iscritto: 18/07/2007

Segnala al moderatore
Postato alle 22:56
Mercoledì, 18/07/2007
quindi dovrebbe essere questo il risultato...

int main ()

{  
    int i;
    char stringa_A[10];
    
    std::cout << "inserisci la stringa da elaborare  ";
    std::cin >> stringa_A;
    
    std::sort (stringa_A, stringa_A + 10);
    
    for (i=0;i<10;i++)
    {std::cout << stringa_A;}
    
    system("pause");
    return 0;
    
}





non so...ho ancora qualche dubbio...
io sto parlando di array di caratteri...
non so se funziona...
che dite???

Ultima modifica effettuata da :: sara :: il 18/07/2007 alle 23:06
PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 11:24
Giovedì, 19/07/2007
la sort funziona anche su array di carattere, l'errore che hai fatto li è che tu passi il primo puntatore e va bene, e dopo l'ultimissimo, ovvero quello 10 dopo, che va bene solo se effetivamente la stringa riempie tutti e 10 i posti.

Quindi visto che vengono inseriti dall'utente e su 10 posti può riempirne di meno se tu ordini per intero lo stesso tutto vai oltre il carattere \0 e prendi anche il valore (ignoto) delle celle non ancora inizializzate; devi quindi fare così:

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <algorithm>
  3.  
  4. using namespace std;
  5.  
  6. int main () {
  7.   char stringa_A[10];
  8.  
  9.   cout << "Inserisci la stringa da elaborare: ";
  10.   cin >> stringa_A;
  11.  
  12.   sort(stringa_A, stringa_A + strlen(stringa_A));
  13.  
  14.   cout << stringa_A << endl;
  15.  
  16.   system("pause");
  17.  
  18.   return 0;
  19. }



ciao

PM Quote
Avatar
:: sara :: (Normal User)
Newbie


Messaggi: 5
Iscritto: 18/07/2007

Segnala al moderatore
Postato alle 11:37
Giovedì, 19/07/2007
grazie a tutti per l'immenso aiuto!!!

ciao ciao:)

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo