Premi qui per scaricare il PDF
In questo laboratorio vedremo due esercizi di programmazione in linguaggio C. Utilizzeremo tutte le strutture sintattiche imparate fin ora.
Esercizio 1
Scrivere un programma in C per l’inserimento dei risultati delle partite di una giornata di campionato di calcio formato da 8 squadre. Il programma deve eseguire le seguenti operazioni:- Definire un tipo di dato per descrivere una giornata di campionato, caratterizzata da:
- Numero della giornata (numero intero);
- Elenco delle 4 partite della giornata, dove ogni partita è caratterizzata da:
- Nome squadra che gioca in casa (stringa di massimo 90 caratteri);
- Nome squadra che gioca fuori casa (stringa di massimo 90 caratteri);
- Risultato definito come goal fatti dalla squadra in casa e goal fatti dalla squadra fuori casa (entrambi numeri interi);
- Acquisire i dati relativi alla giornata di campionato. Una stessa squadra non può essere inserita più volte;
- Richiedere il nome di una squadra all’utente e stampare a video i punti fatti da quella squadra nella giornata di campionato considerando di assegnare 3 punti alla squadra vincitrice, 1 in caso di pareggio e 0 in caso di sconfitta. Se la squadra non partecipa al campionato, il programma deve stampare un apposito messaggio.
#include < stdio.h>
#include < string.h>
#define DIM 90
#define num_partite 2
typedef struct partita
{
char squadra_casa[DIM];
char squadra_ospite[DIM];
int goal_casa;
int goal_ospite;
int punteggio_casa;
int punteggio_ospite;
}partita;
typedef struct giornata
{
int num_giornata;
partita partite[num_partite];
}giornata;
int main()
{
giornata campionato;
char squadra_utente[90];
int i,j, confronto_casa, confronto_ospite, trovato;
printf("Inserisci la giornata di campionato\n");
scanf("%d", &campionato.num_giornata);
getchar();
for (i = 0; i < num_partite; i++)
{
do
{
printf("Inserisci il nome della %d squadra che gioca in casa\n", i+1);
gets(campionato.partite[i].squadra_casa);
trovato = 0;
for (j = 0; j < i && !trovato; j++) //!trovato equivale a trovato == 0
{
if(strcmp(campionato.partite[i].squadra_casa, campionato.partite[j].squadra_casa) == 0 || strcmp(campionato.partite[i].squadra_casa, campionato.partite[j].squadra_ospite) == 0)
{
printf("La squadra %s e' stata già inserita\n", campionato.partite[i].squadra_casa);
trovato = 1;
}
}
} while (trovato); //Equivale a trovato != 0
printf("Inserisci il numero di goal fatti dalla squadra %s\n",campionato.partite[i].squadra_casa);
scanf("%d", &campionato.partite[i].goal_casa);
getchar();
do
{
printf("Inserisci il nome della %d squadra ospite\n", i+1);
gets(campionato.partite[i].squadra_ospite);
trovato = 0;
for (j = 0; j < i && !trovato; j++) //!trovato equivale a trovato == 0
{
if(strcmp(campionato.partite[i].squadra_casa, campionato.partite[j].squadra_casa) == 0 || strcmp(campionato.partite[i].squadra_casa, campionato.partite[j].squadra_ospite) == 0)
{
printf("La squadra %s e' stata già inserita\n", campionato.partite[i].squadra_ospite);
trovato = 1;
}
}
} while (trovato); //Equivale a trovato != 0
printf("Inserisci il numero di goal fatti dalla squadra %s\n",campionato.partite[i].squadra_ospite);
scanf("%d", &campionato.partite[i].goal_ospite);
getchar();
campionato.partite[i].punteggio_casa = 0;
campionato.partite[i].punteggio_ospite = 0;
if(campionato.partite[i].goal_casa > campionato.partite[i].goal_ospite)
{
campionato.partite[i].punteggio_casa += 3;
campionato.partite[i].punteggio_ospite += 0;
}
else if (campionato.partite[i].goal_casa < campionato.partite[i].goal_ospite)
{
campionato.partite[i].punteggio_casa += 0;
campionato.partite[i].punteggio_ospite += 3;
}
else if (campionato.partite[i].goal_casa == campionato.partite[i].goal_ospite)
{
campionato.partite[i].punteggio_casa += 1;
campionato.partite[i].punteggio_ospite += 1;
}
}
printf("Inserisci il nome della squadra per vedere i suoi punti\n");
gets(squadra_utente);
trovato = 0;
for (i = 0; i < num_partite && !trovato; i++)
{
if(strcmp(squadra_utente, campionato.partite[i].squadra_casa) == 0)
{
trovato = 1;
printf("La squadra %s, ha %d punti\n", campionato.partite[i].squadra_casa, campionato.partite[i].punteggio_casa);
}
else if(strcmp(squadra_utente, campionato.partite[i].squadra_casa) == 0)
{
trovato = 1;
printf("La squadra %s, ha %d punti\n", campionato.partite[i].squadra_ospite, campionato.partite[i].punteggio_ospite);
}
}
if (!trovato)
printf("ATTENZIONE, la squadra non partecipa al campionato\n");
return 0;
}
Esercizio 2
Scrivere un programma in C per la gestione delle vendite di un autosalone nel 2020. Il programma deve eseguire le seguenti operazioni:
- Definire un tipo di dato per rappresentare una vendita:
- Denominazione acquirente (stringa di massimo 205 caratteri);
- Data della vendita, nel formato giorno (numero intero), mese (numero intero); l’anno sarà uguale per tutte le vendite (2020);
- Prezzo di vendita (numero reale)
- Veicolo acquistato caratterizzato da marca (stringa di massimo 100 caratteri) e modello (stringa di massimo 100 caratteri).
- Acquisire fino ad un massimo di 1000 dati di vendita richiedendo le informazioni all’utente. Il programma procede con un inserimento ordinato per data di acquisto (ordinare quindi per mese e giorno di vendita, eseguire l’ordinamento mentre si acquisiscono i dati e non alla fine dell’acquisizione);
- Stampare a video l’elenco delle vendite;
- Stampare a video il ricavo (somma dei prezzi di vendita) per mese.
#include <stdio.h>
#include <string.h>
int main()
{
return 0;
}