Ciao, sto scrivendo questo programmino in C che mi permetta di capire la materia piu difficile da un elenco in un file di testo, ma non capisco perchè nell'esecuzione del programma sembra che il mio contatore n vada fino al MAX definito, anche se dalle istruzioni date non credo debba farlo (e neanche non voglio che lo faccia...), stampandomi vari numeri random non voluti...
il file input.txt è scritto così(se può essere di aiuto):
<materia> <nome prof> <cognome prof> <periodo> <crediti> <%superamento esame> per ogni linea.
Sapete dirmi l'errore che commetto? Grazie!:help:
il file input.txt è scritto così(se può essere di aiuto):
<materia> <nome prof> <cognome prof> <periodo> <crediti> <%superamento esame> per ogni linea.
Sapete dirmi l'errore che commetto? Grazie!:help:
Codice:
#include <stdio.h>
#include <stdlib.h>
#define MAX 50
typedef struct
{
char materia[20];
char nome[20];
char cognome[20];
int periodo;
int crediti;
int percsup;
} Insegnamenti;
int maxcrediti(Insegnamenti raccolta[], int i, int n);
int main(int argc, char* argv[])
{
FILE *f;
Insegnamenti raccolta[MAX];
char t[2][MAX],c[3][MAX],p[4][MAX]; //periodo ,crediti, percentuale ,per effettuare conversione
int i, n=0;
if(argc!=2)
{
fprintf(stderr, "Errore argomenti!\n");
return -1;
}
if((f=fopen(argv[1],"r"))==NULL)
{
fprintf(stderr, "Errore apertura del file!\n");
return -2;
}
while((fscanf(f,"%s%s%s%s%s%s", raccolta[n].materia, raccolta[n].nome, raccolta[n].cognome, t[n], c[n], p[n]))!=EOF)
{
n++;
}
//conversione numeri interi
for(i=0;i<n;i++)
{
raccolta[i].periodo = atoi(t[i]);
raccolta[i].crediti = atoi(c[i]);
raccolta[i].percsup = atoi(p[i]);
}
//stampa
for(i=0;i<n;i++)
{
printf("%s\t%s\t%20s\t%d\t%d\t%d\n",raccolta[i].materia,raccolta[i].nome, raccolta[i].cognome, raccolta[i].periodo, raccolta[i].crediti,raccolta[i].percsup);
}
i = maxcrediti(raccolta,i,n);
printf("la materia più difficile è %s", raccolta[i].materia);
return 0;
}
int maxcrediti(Insegnamenti raccolta[], int i, int n)
{
int max;
for(i=0;i<n;i++)
{
if(raccolta[i].percsup < raccolta[n].percsup)
{
max=i;
}
else
{
max=n;
}
}
return max;
}
Ultima modifica: