Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1

    [C] Ordinamento struttura in baso ad un campo

    Salve a tutti.

    Avendo un array di strutture in cui l'utente immette la matricola di uno studente, una materia ed il voto allo scritto e all'orale, devo, poi, ordinare tale struttura per matricola e stampare il tutto.

    Come si fa a far l'ordinamento ? Avevo provato ad adattare l'algoritmo per l'ordinamento di un semplice vettore ma il problema è anche che la variabile "materia" è un array di caratteri .. quindi presumo bisognerebbe, con un ciclo for, scambiare carattere per carattere. E' corretto ? Ma non riesco ad avere precisamente in testa la posizione di quest'ultimo for.

    Grazie mille per l'aiuto e ne approfitto per augurare un buon anno a tutti
    A presto!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Come è fatta la struttura ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Salve, grazie per aver risposto.
    La struttura ha una vettore di caratteri e 1 int e 2 float. Per intenderci:

    codice:
    struct {
                char materia[15];
                int matricola;
                float orale;
                float scritto;
              } alunno[30];
    Saluti,

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Semplicemente quando fai il confronto confronti i numeri di matricola:

    codice:
    if(e1.matricola < e2.matricola)
      //e1 è minore
    else 
      //e2 è minore
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Beh, fin qua era semplice .. è quello che c'è nell'if il difficile ..
    Saluti.

  6. #6
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Scusa, sai come ordinare un array di interi?
    Se lo sai fare ti basta cambiare la condizione nell'if, in sostanza aggiungere un .matricola alle 2 variabili che confronti in questo caso...
    Non vedo dove stia il problema!
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da djremix
    Beh, fin qua era semplice .. è quello che c'è nell'if il difficile ..
    Saluti.
    Per l'elemento materia non ti devi preoccupare. Nel caso della struttura che hai mostrato puoi scambiare i due elementi così come per delle variabili semplici.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Ho buttato giù questo:

    codice:
    void ordinastruct(int ind, struct al struttura[]){
         
         int i,j,k,t,min,a;
         float a1, a2;
         char app[15];
         
         for(i=0; i<ind-1; i++){
                  
                  min=struttura[i].matricola;
                  
                   for(j=0; j<ind; j++){
                            if(struttura[i].matricola<struttura[j].matricola){
                                                                              min=struttura[j].matricola;
                                                                              a1=struttura[i].orale;
                                                                              a2=struttura[i].scritto;
                                                                              
                                                                              for(k=0; k<15; k++){
                                                                                       app[k]=struttura[i].materia[k];
                                                                                       }
                                                                                       
                                                                                       struttura[i].orale=struttura[j].orale;
                                                                                       struttura[i].scritto=struttura[j].scritto;
                                                                                       for(k=0; k<15; k++){
                                                                                                struttura[i].materia[k]=struttura[j].materia[k];
                                                                                                }
                                                                                                
                                                                                                struttura[j].orale=a1;
                                                                                                struttura[j].scritto=a2;
                                                                                                for(k=0; k<15; k++){
                                                                                                         struttura[j].materia[k]=app[k];
                                                                                                         }
                                                                                                         
                                                                                                         a=struttura[i].matricola;
                                                                                                         struttura[i].matricola=min;
                                                                                                         struttura[j].matricola=a;
                                                                                                         }
                                                                                                         }
                                                                                                         }
                                                                                                         }
    ma qualcosa non va ..

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    "Cosa" non va?

    Ma perché tutto quel codice ?

    Ti avevo detto di trattare i due elementi del vettore di strutture [i] e [j] come se fossero elementi di un vettore numerico ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    semplicemente non ordina . anzi .. mi risulta tutto vuoto. Aspetti un attimo,non ho capito cosa intende. cioè, io potrei fare a=struttura[j] e struttura[j]=struttura[i] ??
    Grazie mille per l'aiuto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.