Riordinamento array

di il
3 risposte

Riordinamento array

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;
}

3 Risposte

  • Re: Riordinamento array

    E quindi ? Vuoi scritta la funzione qui nel forum ?

    Ne esistono tante già pronte su internet, a questo punto perché non ne usi una qualunque ?
  • Re: Riordinamento array

    Void riordina (int a[])
    {
    int x;
    extern int i,j,temp;

    for(i=0;i<=x-2;i++)
    {
    for (j=i+1;j<=x-1;j++)
    {
    if(a>a[j])
    a=temp;
    temp=a[j];
    a=a[j];
    }
    }
    for(i=0;i<=x;i++)
    {
    printf("%3d",a);
    }
    }
    e quindi vorrei sapere se questa funzione è giusta siccome non riesco a capire il perche sia sbagliata e magari avere un consiglio su come fare , non una soluzione .(per questo non cerco formule già fatte).grazie
  • Re: Riordinamento array

    Non è proprio sbagliato vedere formule sul riordinamento...io ti consiglio di andarle a vedere magari partendo dai più semplici come il Selection Sort o l'Insertion Sorto
Devi accedere o registrarti per scrivere nel forum
3 risposte