Ordinare array di stringhe

di il
5 risposte

Ordinare array di stringhe

Ciao a tutti, sono un principiante del C e sto facendo un esercizio in cui su un file ho
<nome> <cognome> di varie persone messe in modo disordinato; io devo stampare su terminale i nomi e cognomi ordinati dalla A alla Z.
Avete qualche consiglio su come procedere?

5 Risposte

  • Re: Ordinare array di stringhe

    Il mio consiglio è quello di usare la logica alla base dell'insertion sort, ovvero ricerchi sempre il più "piccolo" e lo stampi, è possibile fare ciò mettendo <cognome> e <nome> in due array di caratteri e confrontando dalla prima posizione dell'array cognome sino a quando non capisci che uno dei due è maggiore. Es:
    ..........
    diverso=-1;
    i=0;
    while(diverso==-1){
          if (cognome1[i] < cognome2[i]){
                maggiore=2;
                diverso= 0;
                }
          else if (cognome1[i]>cognome2[i]){
                 maggiore=1;
                 diverso=0;
                } 
          i++;
          }
    La variabile maggiore serve a dirti quale dei due array di caratteri è quello "da scartare".
    Ovviamente la mia è solo una bozza veloce, poi sta a te aggiungere le varie sfumature, eccezioni etc.. Spero di essere stato utile =)
  • Re: Ordinare array di stringhe

    Grazie per la tempestiva risposta
    Quindi, fammi capire, ogni parola ha un valore numerico per cui è maggiore minore o uguale ad un'altra?
    E comparandole mano a mano tieni sempre quella minore fino a fine parole, poi la stampi e rifai lo stesso procedimento finchè non arrivi al numero totale di parole?
  • Re: Ordinare array di stringhe

    Ciao,
    per confrontare due stringhe in modo molto semplice c'è la funzione strcmp.
  • Re: Ordinare array di stringhe

    Ok grazie worht e anche a te minomic, ho risolto grazie a voi
  • Re: Ordinare array di stringhe

    A n t o n i o ha scritto:


    Grazie per la tempestiva risposta
    Quindi, fammi capire, ogni parola ha un valore numerico per cui è maggiore minore o uguale ad un'altra?
    E comparandole mano a mano tieni sempre quella minore fino a fine parole, poi la stampi e rifai lo stesso procedimento finchè non arrivi al numero totale di parole?
    Il calcolatore utilizza il codice ASCII, che assegna ad ogni carattere/segno/numero un codice binario a 7/8 bit, attraverso l'operatore "<" chiedi di confrontare quale delle due lettere è sita prima nel codice ASCII e di conseguenza nell'alfabeto.
Devi accedere o registrarti per scrivere nel forum
5 risposte