Ultima modifica:
Salve, questo qui è un esercizio da svolgere in C:
Qualcuno potrebbe aiutarmi con i vari passaggi? Non chiedo il codice pronto ma magari un piccolo aiuto, in particolar modo in "
L'elenco delle squadre è memorizzato in un archivio implementato come vettore (quindi typedef struct in generale)
// di strutture" e con le funzioni?
Anche perchè non ho ben capito come funziona la differenza set etc per come è impostato il programma
Codice:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#define LUNGHEZZA_STRINGA 64
#define NUMERO_SQUADRE 10
//
//
// Scrivere un programma che permette di gestire la classifica di un torneo
// di pallavolo
//
// L'elenco delle squadre è memorizzato in un archivio implementato come vettore
// di strutture, ogni struttura contiene il nome della squadra, il punteggio, il
// numero di partite fatte e la differenza set (vinti - persi).
//
// Implementare un applicazione che permette:
// 1. caricare i dati da file
// 2. salvare i dati su file
// 3. inserire un nuovo risultato
// 4. ordinare rispetto al punteggio, in caso di parita' vale il minor numero di partite,
// in caso di ulteriore parita' la differenza set
// 5. stampa
// 6. inserire una squadra nell'archivio
typedef struct squadra_s {
char nome[LUNGHEZZA_STRINGA];
int punteggio;
int numero_partite;
int differenza_set;
} squadra_t;
// Secondo tipo
typedef squadra_t classifica_t[NUMERO_SQUADRE];
void ordina(classifica_t c) {
// Da implementare: calcola la classifica come indicato nel commento
// introduttivo
}
int carica(classifica_t c, const char* nome_file) {
// Nota che per caricare il vettore uso un file binario,
// ripassa la gestione dei file binari
FILE* fp = NULL;
fp = fopen(nome_file, "rb");
if (fp == NULL)
return 0;
if (fread(c, sizeof(squadra_t), NUMERO_SQUADRE, fp) != NUMERO_SQUADRE)
return 0;
return 1;
}
int salva(classifica_t c, const char* nome_file) {
// Nota che per salvare il vettore uso un file binario,
// ripassa la gestione dei file binari
FILE* fp = NULL;
fp = fopen(nome_file, "wb");
if (fp == NULL)
return 0;
if (fwrite(c, sizeof(squadra_t), NUMERO_SQUADRE, fp) != NUMERO_SQUADRE)
return 0;
return 1;
}
int inserisci_squadra(classifica_t c, const char* nome_squadra) {
// I dati vengono inseriti nella prima casella vuota, una casella e' vuota
// quando il campo nome della squadra e' uguale a ""
for (int i = 0; i < NUMERO_SQUADRE; ++i) {
// Verifica se la casella e' vuota, qualora lo fosse viene copiata
// il nome della squadra ed inizializzati a zero tutti gli altri valori
}
}
int aggiorna_calendario(classifica_t c, const char* squadra_1, const char* squadra_2, int set_1, int set_2) {
// in base al numero di set stabilisce qual'e' la squadra vincente
// cerca la prima squadra e aggiorna i valori in base al risultato
// cerca la seconda squadra e aggiorma i valori in vase al risultato
}
int main(void) {
classifica_t classifica = { {"", 0, 0, 0} }; // Inizializzazione del vettore, puo' essere fatto anche usando un ciclo
int scelta;
do {
printf("1. Carica\n");
printf("2. Salva\n");
printf("3. Inserisci un nuovo risultato\n");
printf("4. ordina\n");
printf("5. stampa\n");
printf("6. inserisci una squadra nuova\n");
printf("0. esci\n");
printf(">> ");
scanf("%d", &scelta);
switch (scelta) {
case 0:
break;
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
}
} while (scelta != 0);
}
Qualcuno potrebbe aiutarmi con i vari passaggi? Non chiedo il codice pronto ma magari un piccolo aiuto, in particolar modo in "
L'elenco delle squadre è memorizzato in un archivio implementato come vettore (quindi typedef struct in generale)
// di strutture" e con le funzioni?
Anche perchè non ho ben capito come funziona la differenza set etc per come è impostato il programma