Laboratorio 3 – Lezione del 3 Novembre 2020

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:
    1. Numero della giornata (numero intero);
    2. Elenco delle 4 partite della giornata, dove ogni partita è caratterizzata da:
      1. Nome squadra che gioca in casa (stringa di massimo 90 caratteri);
      2. 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:

  1. Definire un tipo di dato per rappresentare una vendita:
    1. Denominazione acquirente (stringa di massimo 205 caratteri);
    2. Data della vendita, nel formato giorno (numero intero), mese (numero intero); l’anno sarà uguale per tutte le vendite (2020);
    3. Prezzo di vendita (numero reale)
    4. Veicolo acquistato caratterizzato da marca (stringa di massimo 100 caratteri) e modello (stringa di massimo 100 caratteri).
  2. 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);
  3. Stampare a video l’elenco delle vendite;
  4. Stampare a video il ricavo (somma dei prezzi di vendita) per mese.
#include <stdio.h>
#include <string.h>

int main()
{

	return 0;
}

Premi qui per scaricare il PDF