Codice dei programmi nella directory:
///File: Esercizio.txt
Campionato di Calcio
Data una matrice (MAX 10 X 10) memorizzata su file di testo
come qui sotto (5 Righe X 6 Colonne)
char squadre [10][40];
char giornate[10][40];
int righe,colonne;
5 6
Inter Milan Juve Roma Napoli Lazio
Prima Seconda Terza Quarta Quinta
1 1 3 3 0 0
1 1 1 1 1 1
3 3 0 0 1 1
3 3 3 0 0 0
1 3 0 1 3 0
Si calcoli:
1) La classifica del campionato nell'ultima giornata
2) La squadra che ha perso piu' partite
Si produca l'output, prima a video
poi nel file output.txt
///(Fine file: Esercizio.txt)
///File: Campionato.c
/***
Campionato di Calcio
Data una matrice (MAX 10 X 10) memorizzata su file di testo
come qui sotto (5 Righe X 6 Colonne)
char squadre [10][40];
char giornate[10][40];
int righe,colonne;
5 6
Inter Milan Juve Roma Napoli Lazio
Prima Seconda Terza Quarta Quinta
1 1 3 3 0 0
1 1 1 1 1 1
3 3 0 0 1 1
3 3 3 0 0 0
1 3 0 1 3 0
Si calcoli:
1) La classifica del campionato nell'ultima giornata
2) La squadra che ha perso piu' partite
Si produca l'output, prima a video
poi nel file output.txt
*/
#include<stdio.h>
#include<stdlib.h>
#define SQUADRE 10
#define GIORNATE 10
#define LSTR 40
int sq, gi; // dimensioni reali della matrice sq=colonne, gi=righe
char squadre[SQUADRE][LSTR+1]; // vettore di stringhe delle squadre
char giornate[GIORNATE] [LSTR+1]; // vettore di stringhe delle giornate
void carica_dati()
{
FILE *fd;
int i,j;
fd = fopen("campionato.txt","r");
if (fd == NULL)
{
printf("Errore, non trovo il file campionato.txt");
exit(0);
}
fscanf(fd,"%d",&gi); // carico le giornate
fscanf(fd,"%d",&sq); // carico le squadre
for(i=0; i < sq; i++)
fscanf(fd,"%s",squadre[i]); // carico squadre
for(i=0; i < gi; i++)
fscanf(fd,"%s",giornate[i]); // carico giornate
/// poi carico la matrice....
}
void visualizza_dati()
{
int i;
printf("Squadre=%d - Giornate=%d\n",sq,gi);
printf("SQUADRE=");
for(i=0; i < sq; i++)
printf("[%s]",squadre[i]);
printf("\n");
printf("GIORNATE=");
for(i=0; i < gi; i++)
printf("[%s]",giornate[i]);
}
int main()
{
carica_dati();
visualizza_dati();
return 0;
}
///(Fine file: Campionato.c)
///File: campionato.txt
5 6
Inter Milan Juve Roma Napoli Lazio
Prima Seconda Terza Quarta Quinta
0 1 3 3 0 0
0 1 1 1 1 1
0 3 0 0 1 1
0 3 3 0 0 0
3 3 0 1 3 0
///(Fine file: campionato.txt)
///File: campionato2.txt
4 7
Inter Milan Juve Roma Napoli Lazio Parma
Prima Seconda Terza Quarta
1 1 3 3 0 0 1
1 1 1 1 1 1 1
3 3 0 0 1 1 1
3 3 3 0 0 0 1
///(Fine file: campionato2.txt)
///File: CampionatoSoluzione.c
/***
Campionato di Calcio
Data una matrice (MAX 10 X 10) memorizzata su file di testo
come qui sotto (5 Righe X 6 Colonne)
char squadre [10][40];
char giornate[10][40];
int righe,colonne;
5 6
Inter Milan Juve Roma Napoli Lazio
Prima Seconda Terza Quarta Quinta
1 1 3 3 0 0
1 1 1 1 1 1
3 3 0 0 1 1
3 3 3 0 0 0
1 3 0 1 3 0
Si calcoli:
1) La classifica del campionato nell'ultima giornata
2) La squadra che ha perso piu' partite
Si produca l'output, prima a video
poi nel file output.txt
*/
#include<stdio.h>
#include<stdlib.h>
#define SQUADRE 10
#define GIORNATE 10
#define LSTR 40
int sq, gi; // dimensioni reali della matrice sq=colonne, gi=righe
char squadre[SQUADRE][LSTR+1]; // vettore di stringhe delle squadre
char giornate[GIORNATE] [LSTR+1]; // vettore di stringhe delle giornate
int punti[SQUADRE][GIORNATE]= {0}; // punti per SQUADRE / GIORNATE
void carica_dati()
{
FILE *fd;
int i,j;
fd = fopen("campionato.txt","r");
if (fd == NULL)
{
printf("Errore, non trovo il file campionato.txt");
exit(0);
}
fscanf(fd,"%d",&gi); // carico le giornate
fscanf(fd,"%d",&sq); // carico le squadre
for(i=0; i < sq; i++)
fscanf(fd,"%s",squadre[i]); // carico squadre
for(i=0; i < gi; i++)
fscanf(fd,"%s",giornate[i]); // carico giornate
for(i=0; i < gi; i++)
for(j=0; j < sq; j++ ) // carico i punti
fscanf(fd,"%d",&punti[i][j]);
}
void visualizza_dati()
{
int i,j;
printf("Squadre=%d - Giornate=%d\n",sq,gi);
printf("SQUADRE=");
for(i=0; i < sq; i++)
printf("[%s]",squadre[i]);
printf("\n");
printf("GIORNATE=");
for(i=0; i < gi; i++)
printf("[%s]",giornate[i]);
printf("\n");
for(i=0; i < gi; i++) {
for(j=0; j < sq; j++ )
printf("%2d",punti[i][j]);
printf("\n");
}
}
void classifica() // NON ordinata per punti
{
int punteggi[SQUADRE]= {0};
int i,j;
printf("\nClassifica alla %s giornata:\n",giornate[gi-1]);
for(i=0; i < SQUADRE; i++) // Ciclo per tutta la matrice, i mancanti sono a 0!!!
for(j=0; j < GIORNATE; j++)
punteggi[i]+=punti[j][i];
for(i =0; i < sq; i++)
printf("%-8s Punti = %d\n",squadre[i],punteggi[i]);
}
void piu_sconfitte() // la squadra che ha perso piu' partite
{
int somma_punteggi[SQUADRE]={0}; // punteggi
int sconfitte[SQUADRE]={0}; // numero di partite perse per ogni squadra
int squadra_piusconfitte;
int max=-1;
int i,j;
for(i=0; i<sq; i++)
{
for(j=0; j<gi; j++)
{
somma_punteggi[i]+= punti[j][i]; // dato NON richiesto dal testo
if(punti[j][i]==0)
sconfitte[i]++; // conto le sue sconfitte
}
}
for(i=0; i<sq; i++) // calcolo della squadra che ha perso piu' partite
{
if(sconfitte[i]>max)
{
max=sconfitte[i];
squadra_piusconfitte=i;
}
}
printf("\nSquadra con piu' sconfitte: %s, numero di sconfitte: %d, punti %d\n\n",
squadre[squadra_piusconfitte], max, somma_punteggi[squadra_piusconfitte]);
}
int main()
{
carica_dati();
visualizza_dati();
classifica();
piu_sconfitte();
printf("Premi INVIO per terminare...");
getchar();
return 0;
}
///(Fine file: CampionatoSoluzione.c)