Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include "campionato.h"
- #include <fstream>
- using namespace std;
- void campionato::caricamento(team v[])
- {
- string nome;
- for (int i = 0; i < 20; i++)
- {
- v[i].set_id(i);
- cout << "Inserire la squadra n. : " << i + 1<<" ";
- getline(cin, nome);
- v[i].set_nome(nome);
- v[i].punti = 0;
- v[i].vittorie = 0;
- v[i].pareggi = 0;
- v[i].sconfitte = 0;
- v[i].gol_fatti = 0;
- v[i].gol_subiti = 0;
- v[i].diff_reti = 0;
- cout << endl;
- }
- }
- //creazione matrice con tutte le possibili combinazioni
- //la prima colonna identifica il numero della giornata, la seconda colonna la squadra in casa e la terza colonna la squadra ospite
- void campionato::crea_matrice(int G[][3])
- {
- for (int i = 0; i < 190; i++)
- {
- for (int j = 0; j < 3; j++)
- {
- G[i][j] = 20;
- }
- }
- }
- //creazione di due vettori v1 e v2 che scorrono in senso antiorario per la creazione delle partite
- //ogni squadra in v1 (casa) gioca con l'indice del vettore v2 (ospite) corrispondende
- void campionato::scorr_vett(int G[][3], int v1[], int v2[])
- {
- v1[0] = 18; //al primo elemento di v1 viene assegnata la penultima squadra
- for (int i = 1; i < 10; i++) //ciclo for che implementa v1 da 0 a 8, partendo dall'indice n. 1
- {
- v1[i] = i - 1;
- }
- v2[0] = 19; //al primo elemento di v2 viene assegnata l'ultima squadra che resta fissa senza mai scorrere
- int c = 17; //variabile c utile per l'implementazione di v2
- for (int i = 1; i < 10; i++) //ciclo for che implementa v2 da 17 a 9, partendo dall'indice n.1
- {
- v2[i] = c;
- c--;
- }
- for (int i = 0; i < 10; i++) //inserimento delle prime 10 partite nella matrice
- {
- G[i][0] = 0;
- G[i][1] = v1[i];
- G[i][2] = v2[i];
- }
- int num_giornata = 1; //variabile num_giornata che indica il numero della giornata che sarà inserita nella prima colonna di G
- for (int c = 1; c < 19; c++)
- {
- int a = v2[1]; //a variabile di appoggio del secondo valore di v2 che verrà passato al primo valore di v1
- for (int i = 1; i < 10; i++) //scorrimento antiorario di v2
- {
- v2[i] = v2[i + 1];
- }
- v2[9] = v1[9]; //assegno l'ultimo valero di v1 a v2, permettendo così lo scorrimento tra i due vettori
- for (int i = 9; i > 0; i--) //scorrimento antiorario di v1
- {
- v1[i] = v1[i - 1];
- }
- v1[0] = a; //passaggio del secondo valore di v2 al primo valore di v1
- int v = 0; //variabile v che permette l'inserimento delle prime 10 partite all'interno della matrice G
- for (int i = 0; i < 190; i++) //scorrimento matrice G
- {
- if (G[i][0] == 20) //appena trovo l'indice della giornata uguale a 20 inserisco la nuova giornata
- {
- while (v < 10) //ciclo while che permette di inserire le 10 partite della giornata nella matrice G
- {
- G[i][0] = num_giornata;
- G[i][1] = v1[v];
- G[i][2] = v2[v];
- i++; //incremento i che corrisponde all'indice della matrice
- v++; //incremento v che corrisponde all'indice dei vettori
- }
- break;
- }
- }
- num_giornata++; //incremento num_giornata per passare alla giornata successiva
- }
- }
- //funzione che permette la realizzazione del girone di andata formato da 19 giornate
- //La funzione giornate_andate realizza, tramite la variabile ran, un valore random da 0 a 18
- void campionato::giornate_andata(int G[][3], int v1[], int v2[], int M[][3], int ris_casa, int ris_ospite, team v[])
- {
- int j1, j2;
- crea_matrice(G);
- scorr_vett(G, v1, v2);
- int v_verifica[19], ran;
- for (int i = 0; i < 19; i++) //vettore v_verifica con tutte le 20 squadre
- {
- v_verifica[i] = i;
- }
- int ntot = 19;
- int a;
- int j = 0;
- cout << "Giornate di Andata" << endl << endl;
- for (int num_giornata = 0; num_giornata < 19; num_giornata++) //ciclo che permette la stampa delle 19 giornate di andata
- {
- cout << "Giornata n. " << num_giornata + 1 << endl << endl;
- ran = rand() % ntot;
- a = v_verifica[ran];
- int k = 0;
- for (int i = 0; i < 190; i++)
- {
- if (G[i][0] == a)
- {
- while (k < 10)
- {
- stampa_partite(G, i, v, j1, j2); //stampa nome delle squadre
- M[j][0] = num_giornata; //inserimento in matrice M per il ritorno
- M[j][1] = G[i][2];
- M[j][2] = G[i][1];
- i++; //incremento i indice matrice G
- k++; //incremento k ciclo while
- j++; //incremento j indice matrice M
- }
- }
- }
- for (int i = ran; i < ntot; i++)
- {
- v_verifica[i] = v_verifica[i + 1];
- }
- ntot--;
- int scelta;
- do {
- cout << "Vuoi stampare la classifica? (0 si, 1 no) ";
- cin >> scelta;
- } while (scelta != 0 && scelta != 1);
- cout << endl;
- if (scelta == 0)
- {
- classifica(v);
- }
- cout << endl << endl;
- }
- }
- void campionato::stampa_partite(int G[][3], int i, team v[], int& j1, int& j2)
- {
- int ris_casa, ris_ospite;
- ris_casa = rand() % 6;
- ris_ospite = rand() % 6;
- for (j1 = 0; j1 < 20; j1++)
- {
- if (G[i][1] == v[j1].get_id())
- {
- for (j2 = 0; j2 < 20; j2++)
- {
- if (G[i][2] == v[j2].get_id())
- {
- cout << v[j1].get_nome() << " - " << v[j2].get_nome() << "\t" << ris_casa << " - " << ris_ospite << endl;
- break;
- }
- }
- break;
- }
- }
- risultato(v, ris_casa, ris_ospite, j1, j2);
- }
- void campionato::giornate_ritorno(int M[][3], team v[])
- {
- int j1, j2;
- int c = 0, ris_casa, ris_ospite, appoggio;
- cout << "Giornate di Ritorno" << endl << endl;
- for (int i = 0; i < 19; i++)
- {
- cout << "Giornata n. " << 20 << endl;
- for (int i = 0; i < 10; i++)
- {
- ris_casa = rand() % 6;
- ris_ospite = rand() % 6;
- appoggio = c + i;
- stampa_partite(M, appoggio, v, j1, j2);
- cout <<"\t"<< ris_casa << " - " << ris_ospite << endl;
- }
- c += 10;
- cout << endl;
- }
- }
- void campionato::classifica(team v[]) {
- int n = 20;
- int min, temp;
- cout << "Squadra" << "\t" << "Punti" << "\t" << "V" << "\t" << "P" << "\t" << "S" << "\t" << "GF" << "\t" << "GS" <<"\t" << "DR" << endl;
- for (int i = 0; i < 20; i++)
- {
- cout << v[i].get_nome() << "\t" << v[i].punti << "\t" << v[i].vittorie << "\t" << v[i].pareggi << "\t" << v[i].sconfitte << "\t" << v[i].gol_fatti << "\t" << v[i].gol_subiti << "\t" << v[i].diff_reti << endl;
- }
- }
- void campionato::risultato(team v[], int ris_casa, int ris_ospite, int j1, int j2)
- {
- cout << j1 << " " << j2 << endl;
- if (ris_casa > ris_ospite)
- {
- v[j1].punti += 3;
- v[j1].vittorie += 1;
- v[j1].gol_fatti += ris_casa;
- v[j1].gol_subiti += ris_ospite;
- v[j1].diff_reti += (v[j1].gol_fatti - v[j1].gol_subiti);
- v[j2].sconfitte += 1;
- v[j2].gol_fatti += ris_ospite;
- v[j2].gol_subiti += ris_casa;
- v[j2].diff_reti += (v[j2].gol_fatti - v[j2].gol_subiti);
- }
- else if (ris_casa < ris_ospite)
- {
- v[j2].punti += 3;
- v[j2].vittorie += 1;
- v[j2].gol_fatti += ris_ospite;
- v[j2].gol_subiti += ris_casa;
- v[j2].diff_reti += (v[j2].gol_fatti - v[j2].gol_subiti);
- v[j1].sconfitte += 1;
- v[j1].gol_fatti += ris_casa;
- v[j1].gol_subiti += ris_ospite;
- v[j1].diff_reti += (v[j1].gol_fatti - v[j1].gol_subiti);
- }#include <iostream>
- #include <string>
- #include "campionato.h"
- #include <fstream>
- using namespace std;
- void campionato::caricamento(team v[])
- {
- string nome;
- for (int i = 0; i < 20; i++)
- {
- v[i].set_id(i);
- cout << "Inserire la squadra n. : " << i + 1<<" ";
- getline(cin, nome);
- v[i].set_nome(nome);
- v[i].punti = 0;
- v[i].vittorie = 0;
- v[i].pareggi = 0;
- v[i].sconfitte = 0;
- v[i].gol_fatti = 0;
- v[i].gol_subiti = 0;
- v[i].diff_reti = 0;
- cout << endl;
- }
- }
- //creazione matrice con tutte le possibili combinazioni
- //la prima colonna identifica il numero della giornata, la seconda colonna la squadra in casa e la terza colonna la squadra ospite
- void campionato::crea_matrice(int G[][3])
- {
- for (int i = 0; i < 190; i++)
- {
- for (int j = 0; j < 3; j++)
- {
- G[i][j] = 20;
- }
- }
- }
- //creazione di due vettori v1 e v2 che scorrono in senso antiorario per la creazione delle partite
- //ogni squadra in v1 (casa) gioca con l'indice del vettore v2 (ospite) corrispondende
- void campionato::scorr_vett(int G[][3], int v1[], int v2[])
- {
- v1[0] = 18; //al primo elemento di v1 viene assegnata la penultima squadra
- for (int i = 1; i < 10; i++) //ciclo for che implementa v1 da 0 a 8, partendo dall'indice n. 1
- {
- v1[i] = i - 1;
- }
- v2[0] = 19; //al primo elemento di v2 viene assegnata l'ultima squadra che resta fissa senza mai scorrere
- int c = 17; //variabile c utile per l'implementazione di v2
- for (int i = 1; i < 10; i++) //ciclo for che implementa v2 da 17 a 9, partendo dall'indice n.1
- {
- v2[i] = c;
- c--;
- }
- for (int i = 0; i < 10; i++) //inserimento delle prime 10 partite nella matrice
- {
- G[i][0] = 0;
- G[i][1] = v1[i];
- G[i][2] = v2[i];
- }
- int num_giornata = 1; //variabile num_giornata che indica il numero della giornata che sarà inserita nella prima colonna di G
- for (int c = 1; c < 19; c++)
- {
- int a = v2[1]; //a variabile di appoggio del secondo valore di v2 che verrà passato al primo valore di v1
- for (int i = 1; i < 10; i++) //scorrimento antiorario di v2
- {
- v2[i] = v2[i + 1];
- }
- v2[9] = v1[9]; //assegno l'ultimo valero di v1 a v2, permettendo così lo scorrimento tra i due vettori
- for (int i = 9; i > 0; i--) //scorrimento antiorario di v1
- {
- v1[i] = v1[i - 1];
- }
- v1[0] = a; //passaggio del secondo valore di v2 al primo valore di v1
- int v = 0; //variabile v che permette l'inserimento delle prime 10 partite all'interno della matrice G
- for (int i = 0; i < 190; i++) //scorrimento matrice G
- {
- if (G[i][0] == 20) //appena trovo l'indice della giornata uguale a 20 inserisco la nuova giornata
- {
- while (v < 10) //ciclo while che permette di inserire le 10 partite della giornata nella matrice G
- {
- G[i][0] = num_giornata;
- G[i][1] = v1[v];
- G[i][2] = v2[v];
- i++; //incremento i che corrisponde all'indice della matrice
- v++; //incremento v che corrisponde all'indice dei vettori
- }
- break;
- }
- }
- num_giornata++; //incremento num_giornata per passare alla giornata successiva
- }
- }
- //funzione che permette la realizzazione del girone di andata formato da 19 giornate
- //La funzione giornate_andate realizza, tramite la variabile ran, un valore random da 0 a 18
- void campionato::giornate_andata(int G[][3], int v1[], int v2[], int M[][3], int ris_casa, int ris_ospite, team v[])
- {
- int j1, j2;
- crea_matrice(G);
- scorr_vett(G, v1, v2);
- int v_verifica[19], ran;
- for (int i = 0; i < 19; i++) //vettore v_verifica con tutte le 20 squadre
- {
- v_verifica[i] = i;
- }
- int ntot = 19;
- int a;
- int j = 0;
- cout << "Giornate di Andata" << endl << endl;
- for (int num_giornata = 0; num_giornata < 19; num_giornata++) //ciclo che permette la stampa delle 19 giornate di andata
- {
- cout << "Giornata n. " << num_giornata + 1 << endl << endl;
- ran = rand() % ntot;
- a = v_verifica[ran];
- int k = 0;
- for (int i = 0; i < 190; i++)
- {
- if (G[i][0] == a)
- {
- while (k < 10)
- {
- stampa_partite(G, i, v, j1, j2); //stampa nome delle squadre
- M[j][0] = num_giornata; //inserimento in matrice M per il ritorno
- M[j][1] = G[i][2];
- M[j][2] = G[i][1];
- i++; //incremento i indice matrice G
- k++; //incremento k ciclo while
- j++; //incremento j indice matrice M
- }
- }
- }
- for (int i = ran; i < ntot; i++)
- {
- v_verifica[i] = v_verifica[i + 1];
- }
- ntot--;
- int scelta;
- do {
- cout << "Vuoi stampare la classifica? (0 si, 1 no) ";
- cin >> scelta;
- } while (scelta != 0 && scelta != 1);
- cout << endl;
- if (scelta == 0)
- {
- classifica(v);
- }
- cout << endl << endl;
- }
- }
- void campionato::stampa_partite(int G[][3], int i, team v[], int& j1, int& j2)
- {
- int ris_casa, ris_ospite;
- ris_casa = rand() % 6;
- ris_ospite = rand() % 6;
- for (j1 = 0; j1 < 20; j1++)
- {
- if (G[i][1] == v[j1].get_id())
- {
- for (j2 = 0; j2 < 20; j2++)
- {
- if (G[i][2] == v[j2].get_id())
- {
- cout << v[j1].get_nome() << " - " << v[j2].get_nome() << "\t" << ris_casa << " - " << ris_ospite << endl;
- break;
- }
- }
- break;
- }
- }
- risultato(v, ris_casa, ris_ospite, j1, j2);
- }
- void campionato::giornate_ritorno(int M[][3], team v[])
- {
- int j1, j2;
- int c = 0, ris_casa, ris_ospite, appoggio;
- cout << "Giornate di Ritorno" << endl << endl;
- for (int i = 0; i < 19; i++)
- {
- cout << "Giornata n. " << 20 << endl;
- for (int i = 0; i < 10; i++)
- {
- ris_casa = rand() % 6;
- ris_ospite = rand() % 6;
- appoggio = c + i;
- stampa_partite(M, appoggio, v, j1, j2);
- cout <<"\t"<< ris_casa << " - " << ris_ospite << endl;
- }
- c += 10;
- cout << endl;
- }
- }
- void campionato::classifica(team v[]) {
- int n = 20;
- int min, temp;
- cout << "Squadra" << "\t" << "Punti" << "\t" << "V" << "\t" << "P" << "\t" << "S" << "\t" << "GF" << "\t" << "GS" <<"\t" << "DR" << endl;
- for (int i = 0; i < 20; i++)
- {
- cout << v[i].get_nome() << "\t" << v[i].punti << "\t" << v[i].vittorie << "\t" << v[i].pareggi << "\t" << v[i].sconfitte << "\t" << v[i].gol_fatti << "\t" << v[i].gol_subiti << "\t" << v[i].diff_reti << endl;
- }
- }
- void campionato::risultato(team v[], int ris_casa, int ris_ospite, int j1, int j2)
- {
- cout << j1 << " " << j2 << endl;
- if (ris_casa > ris_ospite)
- {
- v[j1].punti += 3;
- v[j1].vittorie += 1;
- v[j1].gol_fatti += ris_casa;
- v[j1].gol_subiti += ris_ospite;
- v[j1].diff_reti += (v[j1].gol_fatti - v[j1].gol_subiti);
- v[j2].sconfitte += 1;
- v[j2].gol_fatti += ris_ospite;
- v[j2].gol_subiti += ris_casa;
- v[j2].diff_reti += (v[j2].gol_fatti - v[j2].gol_subiti);
- }
- else if (ris_casa < ris_ospite)
- {
- v[j2].punti += 3;
- v[j2].vittorie += 1;
- v[j2].gol_fatti += ris_ospite;
- v[j2].gol_subiti += ris_casa;
- v[j2].diff_reti += (v[j2].gol_fatti - v[j2].gol_subiti);
- v[j1].sconfitte += 1;
- v[j1].gol_fatti += ris_casa;
- v[j1].gol_subiti += ris_ospite;
- v[j1].diff_reti += (v[j1].gol_fatti - v[j1].gol_subiti);
- }
- else
- {
- v[j1].punti += 1;
- v[j1].pareggi += 1;
- v[j1].gol_fatti += ris_casa;
- v[j1].gol_subiti += ris_ospite;
- v[j1].diff_reti += (v[j1].gol_fatti - v[j1].gol_subiti);
- v[j2].punti += 1;
- v[j2].pareggi += 1;
- v[j2].gol_fatti += ris_ospite;
- v[j2].gol_subiti += ris_casa;
- v[j2].diff_reti += (v[j2].gol_fatti - v[j2].gol_subiti);
- }
- }Gig
- else
- {
- v[j1].punti += 1;
- v[j1].pareggi += 1;
- v[j1].gol_fatti += ris_casa;
- v[j1].gol_subiti += ris_ospite;
- v[j1].diff_reti += (v[j1].gol_fatti - v[j1].gol_subiti);
- v[j2].punti += 1;
- v[j2].pareggi += 1;
- v[j2].gol_fatti += ris_ospite;
- v[j2].gol_subiti += ris_casa;
- v[j2].diff_reti += (v[j2].gol_fatti - v[j2].gol_subiti);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement