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)