ragazzi ho un problema non riesco ad ordinare gli elementi del dato strutturato.Io vorrei che acquisito un file i suoi elementi vengano ordinati in base al voto crescente e non ci riesco
Vedete se trovate errori nel listato.
p.s. non fate caso ad eventuali commenti
#include<stdio.h>
#include<conio.h>
struct studente { char cognome[20];char sesso[2];int voto;};
/*il penultimo ; puoi anche toglierlo ma ti da un warning*/
int acquisisci(FILE*,struct studente*);
void ordina (int,struct studente*);
main()
{
FILE *fpi;
int N,i;
struct studente classe [20];
fpi=fopen("studenti.txt","r");
if(fpi==NULL)
printf("Il file non esiste");
else
{
N=acquisisci(fpi,classe);
void ordina(N,classe);
}
getch();
}
int acquisisci(FILE *A,struct studente *B)
{
int i=0;
while(fscanf(A,"%s%s%d",B[i].cognome,B[i].sesso,&B[i].voto)!=EOF)
{
printf("cognome= %s sesso= %s voto= %d \n\n" ,B[i].cognome,B[i].sesso,B[i].voto);
i++;
}
fclose(A);
return i;
}
void ordina (int A,struct studente *B)
{
int i,j,imin,temp;
/* struct studente temp; */
for (i=0;i<A-1;i++)
{
imin=i;
for(j=i+1;j<A;j++)
{
if(B[j].voto<B[imin].voto)
imin=j;
}
temp=B[i].voto;
B[i].voto=B[imin].voto;
B[imin].voto=temp;
for(i=0;i<A;i++)
printf("%d",B[i].voto);
}
}
Vedete se trovate errori nel listato.
p.s. non fate caso ad eventuali commenti
#include<stdio.h>
#include<conio.h>
struct studente { char cognome[20];char sesso[2];int voto;};
/*il penultimo ; puoi anche toglierlo ma ti da un warning*/
int acquisisci(FILE*,struct studente*);
void ordina (int,struct studente*);
main()
{
FILE *fpi;
int N,i;
struct studente classe [20];
fpi=fopen("studenti.txt","r");
if(fpi==NULL)
printf("Il file non esiste");
else
{
N=acquisisci(fpi,classe);
void ordina(N,classe);
}
getch();
}
int acquisisci(FILE *A,struct studente *B)
{
int i=0;
while(fscanf(A,"%s%s%d",B[i].cognome,B[i].sesso,&B[i].voto)!=EOF)
{
printf("cognome= %s sesso= %s voto= %d \n\n" ,B[i].cognome,B[i].sesso,B[i].voto);
i++;
}
fclose(A);
return i;
}
void ordina (int A,struct studente *B)
{
int i,j,imin,temp;
/* struct studente temp; */
for (i=0;i<A-1;i++)
{
imin=i;
for(j=i+1;j<A;j++)
{
if(B[j].voto<B[imin].voto)
imin=j;
}
temp=B[i].voto;
B[i].voto=B[imin].voto;
B[imin].voto=temp;
for(i=0;i<A;i++)
printf("%d",B[i].voto);
}
}
Commenta