Ciao a tutti ,
stavo scrivendo un programma per registrare i voti di diverse matricole inerite in modo casuale(potrei inserire prima il voto della matricola 234, poi quello della matricola 2, poi quello della 600 e così via). Una volta inseriti tutti i dati, il programma mi deve dire quali matricole hanno preso più di 18. Non riesco a metterle in ordine, perchè mi da l'ordine con cui le ho scritte. ad es.
passato esame : matricola 234 matricola 2 e matricola 600. Vorrei che fossero ordinate, avevo pensato a una funzione esterna con una selection sort ma non riesco a farla . Qui sotto "allego" il testo, scusate se non mi sono spiegato bene, grazie in anticipo per le risposte .
#include <stdio.h>
#include <stdlib.h>
void riordina(int[]);
int main(int argc, const char * argv[]) {
int NMAX, i ;
printf("Quanti sono gli studenti di cui si deve registrare il voto?");
scanf("%d",&NMAX);
struct persona
{
int NMAT;
int voto ;
};
struct persona studente[NMAX] ;
for (i=0;i<NMAX;i++)
{
printf("NUMERO MATRICOLA:");
scanf("%d",&studente.NMAT);
printf("VOTO(compreso fra 18 e 30) : ");
scanf("%d",&studente.voto);
if(studente.voto<18)
{
printf("esame non passato\n ");
}
}
int *matricole = studente.NMAT;
printf("numero di studenti promossi :\n");
for ( i=0 ; i<=NMAX; i++)
{
if(studente.voto>=18)
riordina(studente.NMAT);//????
printf("matricola %d\n",studente.NMAT);
}
return 0;
}