Salve a tutti, questo è un programma(o per lo meno dovrebbe esserlo) che serve per, dato un file formattato come "materia""nome""cognome""periodo""crediti""percentuale superamento" stampare a video la materia con il più alto numero di crediti assegnati e per ogni periodo quella con la percentuale di superamento più bassa.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 20
typedef struct {
char materia[N];
char nome_prof[N];
char cognome_prof[N];
int periodo;
int crediti;
int superamento;
} Prof;
typedef struct{
char materia[N];
int superamento;} Superi;
int superamenti(Prof lista[],int i);
int main(int argc, char*argv[])
{
Prof lista[80];
FILE *fp;
char materia_top[20];
fp=fopen(argv[1],"r");
int i=0,k,j;
if(fp == NULL)
printf("Errore nell'apertura del file");
if(argc!=2)
printf("Errore nell'immissione dei dati");
while(!feof(fp))
{
fscanf(fp,"%s %s %s %d %d %d", lista.materia,lista.nome_prof,lista.cognome_prof,&lista.periodo,&lista.crediti,&lista.superamento);
i++;
}
int flag=0;
for(j=0;j<i;j++)
{
for(k=0;k<j;k++)
{
if(lista[j].crediti<lista[k].crediti)
{
flag++;
}
if(flag==0)
{
strcpy(materia_top,lista[j-1].materia);
}
}
}
printf("La materia che da il maggior numero di crediti e' %s\n", materia_top);
superamenti(lista,i);
return 0;
}
int superamenti(Prof lista[],int i)
{
Superi lista1[80];
int p=0,j,k,q,flag1=0;
for(j=1;j<=4;j++)
{
for(k=0;k<i;k++)
{
if(lista[k].periodo==j)
{
strcpy(lista1[p].materia,lista[k].materia);
lista1[p].superamento=lista[k].superamento;
p++;
}
}
for(k=0;k<=p;k++)
{
for(q=0;q<=p;q++)
{
if(lista1[k].superamento<lista1[q].superamento)
flag1++;
}
if(flag1==0)
printf("La materia piu' difficile da superare del %d periodo e' %s\n",j,lista1[k].materia);
}
}
return 0;
}
Tuttavia non ci entra nemmeno nella seconda funzione..dov'è che sbaglio?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 20
typedef struct {
char materia[N];
char nome_prof[N];
char cognome_prof[N];
int periodo;
int crediti;
int superamento;
} Prof;
typedef struct{
char materia[N];
int superamento;} Superi;
int superamenti(Prof lista[],int i);
int main(int argc, char*argv[])
{
Prof lista[80];
FILE *fp;
char materia_top[20];
fp=fopen(argv[1],"r");
int i=0,k,j;
if(fp == NULL)
printf("Errore nell'apertura del file");
if(argc!=2)
printf("Errore nell'immissione dei dati");
while(!feof(fp))
{
fscanf(fp,"%s %s %s %d %d %d", lista.materia,lista.nome_prof,lista.cognome_prof,&lista.periodo,&lista.crediti,&lista.superamento);
i++;
}
int flag=0;
for(j=0;j<i;j++)
{
for(k=0;k<j;k++)
{
if(lista[j].crediti<lista[k].crediti)
{
flag++;
}
if(flag==0)
{
strcpy(materia_top,lista[j-1].materia);
}
}
}
printf("La materia che da il maggior numero di crediti e' %s\n", materia_top);
superamenti(lista,i);
return 0;
}
int superamenti(Prof lista[],int i)
{
Superi lista1[80];
int p=0,j,k,q,flag1=0;
for(j=1;j<=4;j++)
{
for(k=0;k<i;k++)
{
if(lista[k].periodo==j)
{
strcpy(lista1[p].materia,lista[k].materia);
lista1[p].superamento=lista[k].superamento;
p++;
}
}
for(k=0;k<=p;k++)
{
for(q=0;q<=p;q++)
{
if(lista1[k].superamento<lista1[q].superamento)
flag1++;
}
if(flag1==0)
printf("La materia piu' difficile da superare del %d periodo e' %s\n",j,lista1[k].materia);
}
}
return 0;
}
Tuttavia non ci entra nemmeno nella seconda funzione..dov'è che sbaglio?