Advertisement
Guest User

Gigi

a guest
Jan 20th, 2020
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.99 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include "campionato.h"
  4. #include <fstream>
  5. using namespace std;
  6.  
  7. void campionato::caricamento(team v[])
  8. {
  9. string nome;
  10. for (int i = 0; i < 20; i++)
  11. {
  12. v[i].set_id(i);
  13. cout << "Inserire la squadra n. : " << i + 1<<" ";
  14. getline(cin, nome);
  15. v[i].set_nome(nome);
  16. v[i].punti = 0;
  17. v[i].vittorie = 0;
  18. v[i].pareggi = 0;
  19. v[i].sconfitte = 0;
  20. v[i].gol_fatti = 0;
  21. v[i].gol_subiti = 0;
  22. v[i].diff_reti = 0;
  23. cout << endl;
  24. }
  25. }
  26.  
  27. //creazione matrice con tutte le possibili combinazioni
  28. //la prima colonna identifica il numero della giornata, la seconda colonna la squadra in casa e la terza colonna la squadra ospite
  29. void campionato::crea_matrice(int G[][3])
  30. {
  31. for (int i = 0; i < 190; i++)
  32. {
  33. for (int j = 0; j < 3; j++)
  34. {
  35. G[i][j] = 20;
  36. }
  37. }
  38. }
  39.  
  40. //creazione di due vettori v1 e v2 che scorrono in senso antiorario per la creazione delle partite
  41. //ogni squadra in v1 (casa) gioca con l'indice del vettore v2 (ospite) corrispondende
  42. void campionato::scorr_vett(int G[][3], int v1[], int v2[])
  43. {
  44. v1[0] = 18; //al primo elemento di v1 viene assegnata la penultima squadra
  45. for (int i = 1; i < 10; i++) //ciclo for che implementa v1 da 0 a 8, partendo dall'indice n. 1
  46. {
  47. v1[i] = i - 1;
  48. }
  49.  
  50. v2[0] = 19; //al primo elemento di v2 viene assegnata l'ultima squadra che resta fissa senza mai scorrere
  51. int c = 17; //variabile c utile per l'implementazione di v2
  52. for (int i = 1; i < 10; i++) //ciclo for che implementa v2 da 17 a 9, partendo dall'indice n.1
  53. {
  54. v2[i] = c;
  55. c--;
  56. }
  57.  
  58. for (int i = 0; i < 10; i++) //inserimento delle prime 10 partite nella matrice
  59. {
  60. G[i][0] = 0;
  61. G[i][1] = v1[i];
  62. G[i][2] = v2[i];
  63. }
  64. int num_giornata = 1; //variabile num_giornata che indica il numero della giornata che sarà inserita nella prima colonna di G
  65. for (int c = 1; c < 19; c++)
  66. {
  67. int a = v2[1]; //a variabile di appoggio del secondo valore di v2 che verrà passato al primo valore di v1
  68.  
  69. for (int i = 1; i < 10; i++) //scorrimento antiorario di v2
  70. {
  71. v2[i] = v2[i + 1];
  72. }
  73. v2[9] = v1[9]; //assegno l'ultimo valero di v1 a v2, permettendo così lo scorrimento tra i due vettori
  74.  
  75. for (int i = 9; i > 0; i--) //scorrimento antiorario di v1
  76. {
  77. v1[i] = v1[i - 1];
  78. }
  79. v1[0] = a; //passaggio del secondo valore di v2 al primo valore di v1
  80. int v = 0; //variabile v che permette l'inserimento delle prime 10 partite all'interno della matrice G
  81. for (int i = 0; i < 190; i++) //scorrimento matrice G
  82. {
  83. if (G[i][0] == 20) //appena trovo l'indice della giornata uguale a 20 inserisco la nuova giornata
  84. {
  85. while (v < 10) //ciclo while che permette di inserire le 10 partite della giornata nella matrice G
  86. {
  87. G[i][0] = num_giornata;
  88. G[i][1] = v1[v];
  89. G[i][2] = v2[v];
  90. i++; //incremento i che corrisponde all'indice della matrice
  91. v++; //incremento v che corrisponde all'indice dei vettori
  92. }
  93. break;
  94. }
  95. }
  96. num_giornata++; //incremento num_giornata per passare alla giornata successiva
  97. }
  98. }
  99.  
  100. //funzione che permette la realizzazione del girone di andata formato da 19 giornate
  101. //La funzione giornate_andate realizza, tramite la variabile ran, un valore random da 0 a 18
  102. void campionato::giornate_andata(int G[][3], int v1[], int v2[], int M[][3], int ris_casa, int ris_ospite, team v[])
  103. {
  104. int j1, j2;
  105. crea_matrice(G);
  106. scorr_vett(G, v1, v2);
  107. int v_verifica[19], ran;
  108. for (int i = 0; i < 19; i++) //vettore v_verifica con tutte le 20 squadre
  109. {
  110. v_verifica[i] = i;
  111. }
  112.  
  113. int ntot = 19;
  114.  
  115. int a;
  116. int j = 0;
  117.  
  118. cout << "Giornate di Andata" << endl << endl;
  119. for (int num_giornata = 0; num_giornata < 19; num_giornata++) //ciclo che permette la stampa delle 19 giornate di andata
  120. {
  121. cout << "Giornata n. " << num_giornata + 1 << endl << endl;
  122. ran = rand() % ntot;
  123.  
  124. a = v_verifica[ran];
  125.  
  126. int k = 0;
  127.  
  128. for (int i = 0; i < 190; i++)
  129. {
  130. if (G[i][0] == a)
  131. {
  132. while (k < 10)
  133. {
  134. stampa_partite(G, i, v, j1, j2); //stampa nome delle squadre
  135. M[j][0] = num_giornata; //inserimento in matrice M per il ritorno
  136. M[j][1] = G[i][2];
  137. M[j][2] = G[i][1];
  138. i++; //incremento i indice matrice G
  139. k++; //incremento k ciclo while
  140. j++; //incremento j indice matrice M
  141. }
  142. }
  143. }
  144.  
  145. for (int i = ran; i < ntot; i++)
  146. {
  147. v_verifica[i] = v_verifica[i + 1];
  148. }
  149. ntot--;
  150. int scelta;
  151. do {
  152. cout << "Vuoi stampare la classifica? (0 si, 1 no) ";
  153. cin >> scelta;
  154. } while (scelta != 0 && scelta != 1);
  155. cout << endl;
  156. if (scelta == 0)
  157. {
  158. classifica(v);
  159. }
  160. cout << endl << endl;
  161. }
  162. }
  163.  
  164. void campionato::stampa_partite(int G[][3], int i, team v[], int& j1, int& j2)
  165. {
  166. int ris_casa, ris_ospite;
  167. ris_casa = rand() % 6;
  168. ris_ospite = rand() % 6;
  169. for (j1 = 0; j1 < 20; j1++)
  170. {
  171. if (G[i][1] == v[j1].get_id())
  172. {
  173. for (j2 = 0; j2 < 20; j2++)
  174. {
  175. if (G[i][2] == v[j2].get_id())
  176. {
  177. cout << v[j1].get_nome() << " - " << v[j2].get_nome() << "\t" << ris_casa << " - " << ris_ospite << endl;
  178. break;
  179. }
  180. }
  181. break;
  182. }
  183. }
  184. risultato(v, ris_casa, ris_ospite, j1, j2);
  185. }
  186.  
  187. void campionato::giornate_ritorno(int M[][3], team v[])
  188. {
  189. int j1, j2;
  190. int c = 0, ris_casa, ris_ospite, appoggio;
  191. cout << "Giornate di Ritorno" << endl << endl;
  192. for (int i = 0; i < 19; i++)
  193. {
  194. cout << "Giornata n. " << 20 << endl;
  195. for (int i = 0; i < 10; i++)
  196. {
  197. ris_casa = rand() % 6;
  198. ris_ospite = rand() % 6;
  199. appoggio = c + i;
  200. stampa_partite(M, appoggio, v, j1, j2);
  201. cout <<"\t"<< ris_casa << " - " << ris_ospite << endl;
  202. }
  203. c += 10;
  204. cout << endl;
  205. }
  206. }
  207.  
  208. void campionato::classifica(team v[]) {
  209. int n = 20;
  210. int min, temp;
  211. cout << "Squadra" << "\t" << "Punti" << "\t" << "V" << "\t" << "P" << "\t" << "S" << "\t" << "GF" << "\t" << "GS" <<"\t" << "DR" << endl;
  212. for (int i = 0; i < 20; i++)
  213. {
  214. 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;
  215. }
  216. }
  217.  
  218. void campionato::risultato(team v[], int ris_casa, int ris_ospite, int j1, int j2)
  219. {
  220. cout << j1 << " " << j2 << endl;
  221. if (ris_casa > ris_ospite)
  222. {
  223. v[j1].punti += 3;
  224. v[j1].vittorie += 1;
  225. v[j1].gol_fatti += ris_casa;
  226. v[j1].gol_subiti += ris_ospite;
  227. v[j1].diff_reti += (v[j1].gol_fatti - v[j1].gol_subiti);
  228. v[j2].sconfitte += 1;
  229. v[j2].gol_fatti += ris_ospite;
  230. v[j2].gol_subiti += ris_casa;
  231. v[j2].diff_reti += (v[j2].gol_fatti - v[j2].gol_subiti);
  232. }
  233. else if (ris_casa < ris_ospite)
  234. {
  235. v[j2].punti += 3;
  236. v[j2].vittorie += 1;
  237. v[j2].gol_fatti += ris_ospite;
  238. v[j2].gol_subiti += ris_casa;
  239. v[j2].diff_reti += (v[j2].gol_fatti - v[j2].gol_subiti);
  240. v[j1].sconfitte += 1;
  241. v[j1].gol_fatti += ris_casa;
  242. v[j1].gol_subiti += ris_ospite;
  243. v[j1].diff_reti += (v[j1].gol_fatti - v[j1].gol_subiti);
  244. }#include <iostream>
  245. #include <string>
  246. #include "campionato.h"
  247. #include <fstream>
  248. using namespace std;
  249.  
  250. void campionato::caricamento(team v[])
  251. {
  252. string nome;
  253. for (int i = 0; i < 20; i++)
  254. {
  255. v[i].set_id(i);
  256. cout << "Inserire la squadra n. : " << i + 1<<" ";
  257. getline(cin, nome);
  258. v[i].set_nome(nome);
  259. v[i].punti = 0;
  260. v[i].vittorie = 0;
  261. v[i].pareggi = 0;
  262. v[i].sconfitte = 0;
  263. v[i].gol_fatti = 0;
  264. v[i].gol_subiti = 0;
  265. v[i].diff_reti = 0;
  266. cout << endl;
  267. }
  268. }
  269.  
  270. //creazione matrice con tutte le possibili combinazioni
  271. //la prima colonna identifica il numero della giornata, la seconda colonna la squadra in casa e la terza colonna la squadra ospite
  272. void campionato::crea_matrice(int G[][3])
  273. {
  274. for (int i = 0; i < 190; i++)
  275. {
  276. for (int j = 0; j < 3; j++)
  277. {
  278. G[i][j] = 20;
  279. }
  280. }
  281. }
  282.  
  283. //creazione di due vettori v1 e v2 che scorrono in senso antiorario per la creazione delle partite
  284. //ogni squadra in v1 (casa) gioca con l'indice del vettore v2 (ospite) corrispondende
  285. void campionato::scorr_vett(int G[][3], int v1[], int v2[])
  286. {
  287. v1[0] = 18; //al primo elemento di v1 viene assegnata la penultima squadra
  288. for (int i = 1; i < 10; i++) //ciclo for che implementa v1 da 0 a 8, partendo dall'indice n. 1
  289. {
  290. v1[i] = i - 1;
  291. }
  292.  
  293. v2[0] = 19; //al primo elemento di v2 viene assegnata l'ultima squadra che resta fissa senza mai scorrere
  294. int c = 17; //variabile c utile per l'implementazione di v2
  295. for (int i = 1; i < 10; i++) //ciclo for che implementa v2 da 17 a 9, partendo dall'indice n.1
  296. {
  297. v2[i] = c;
  298. c--;
  299. }
  300.  
  301. for (int i = 0; i < 10; i++) //inserimento delle prime 10 partite nella matrice
  302. {
  303. G[i][0] = 0;
  304. G[i][1] = v1[i];
  305. G[i][2] = v2[i];
  306. }
  307. int num_giornata = 1; //variabile num_giornata che indica il numero della giornata che sarà inserita nella prima colonna di G
  308. for (int c = 1; c < 19; c++)
  309. {
  310. int a = v2[1]; //a variabile di appoggio del secondo valore di v2 che verrà passato al primo valore di v1
  311.  
  312. for (int i = 1; i < 10; i++) //scorrimento antiorario di v2
  313. {
  314. v2[i] = v2[i + 1];
  315. }
  316. v2[9] = v1[9]; //assegno l'ultimo valero di v1 a v2, permettendo così lo scorrimento tra i due vettori
  317.  
  318. for (int i = 9; i > 0; i--) //scorrimento antiorario di v1
  319. {
  320. v1[i] = v1[i - 1];
  321. }
  322. v1[0] = a; //passaggio del secondo valore di v2 al primo valore di v1
  323. int v = 0; //variabile v che permette l'inserimento delle prime 10 partite all'interno della matrice G
  324. for (int i = 0; i < 190; i++) //scorrimento matrice G
  325. {
  326. if (G[i][0] == 20) //appena trovo l'indice della giornata uguale a 20 inserisco la nuova giornata
  327. {
  328. while (v < 10) //ciclo while che permette di inserire le 10 partite della giornata nella matrice G
  329. {
  330. G[i][0] = num_giornata;
  331. G[i][1] = v1[v];
  332. G[i][2] = v2[v];
  333. i++; //incremento i che corrisponde all'indice della matrice
  334. v++; //incremento v che corrisponde all'indice dei vettori
  335. }
  336. break;
  337. }
  338. }
  339. num_giornata++; //incremento num_giornata per passare alla giornata successiva
  340. }
  341. }
  342.  
  343. //funzione che permette la realizzazione del girone di andata formato da 19 giornate
  344. //La funzione giornate_andate realizza, tramite la variabile ran, un valore random da 0 a 18
  345. void campionato::giornate_andata(int G[][3], int v1[], int v2[], int M[][3], int ris_casa, int ris_ospite, team v[])
  346. {
  347. int j1, j2;
  348. crea_matrice(G);
  349. scorr_vett(G, v1, v2);
  350. int v_verifica[19], ran;
  351. for (int i = 0; i < 19; i++) //vettore v_verifica con tutte le 20 squadre
  352. {
  353. v_verifica[i] = i;
  354. }
  355.  
  356. int ntot = 19;
  357.  
  358. int a;
  359. int j = 0;
  360.  
  361. cout << "Giornate di Andata" << endl << endl;
  362. for (int num_giornata = 0; num_giornata < 19; num_giornata++) //ciclo che permette la stampa delle 19 giornate di andata
  363. {
  364. cout << "Giornata n. " << num_giornata + 1 << endl << endl;
  365. ran = rand() % ntot;
  366.  
  367. a = v_verifica[ran];
  368.  
  369. int k = 0;
  370.  
  371. for (int i = 0; i < 190; i++)
  372. {
  373. if (G[i][0] == a)
  374. {
  375. while (k < 10)
  376. {
  377. stampa_partite(G, i, v, j1, j2); //stampa nome delle squadre
  378. M[j][0] = num_giornata; //inserimento in matrice M per il ritorno
  379. M[j][1] = G[i][2];
  380. M[j][2] = G[i][1];
  381. i++; //incremento i indice matrice G
  382. k++; //incremento k ciclo while
  383. j++; //incremento j indice matrice M
  384. }
  385. }
  386. }
  387.  
  388. for (int i = ran; i < ntot; i++)
  389. {
  390. v_verifica[i] = v_verifica[i + 1];
  391. }
  392. ntot--;
  393. int scelta;
  394. do {
  395. cout << "Vuoi stampare la classifica? (0 si, 1 no) ";
  396. cin >> scelta;
  397. } while (scelta != 0 && scelta != 1);
  398. cout << endl;
  399. if (scelta == 0)
  400. {
  401. classifica(v);
  402. }
  403. cout << endl << endl;
  404. }
  405. }
  406.  
  407. void campionato::stampa_partite(int G[][3], int i, team v[], int& j1, int& j2)
  408. {
  409. int ris_casa, ris_ospite;
  410. ris_casa = rand() % 6;
  411. ris_ospite = rand() % 6;
  412. for (j1 = 0; j1 < 20; j1++)
  413. {
  414. if (G[i][1] == v[j1].get_id())
  415. {
  416. for (j2 = 0; j2 < 20; j2++)
  417. {
  418. if (G[i][2] == v[j2].get_id())
  419. {
  420. cout << v[j1].get_nome() << " - " << v[j2].get_nome() << "\t" << ris_casa << " - " << ris_ospite << endl;
  421. break;
  422. }
  423. }
  424. break;
  425. }
  426. }
  427. risultato(v, ris_casa, ris_ospite, j1, j2);
  428. }
  429.  
  430. void campionato::giornate_ritorno(int M[][3], team v[])
  431. {
  432. int j1, j2;
  433. int c = 0, ris_casa, ris_ospite, appoggio;
  434. cout << "Giornate di Ritorno" << endl << endl;
  435. for (int i = 0; i < 19; i++)
  436. {
  437. cout << "Giornata n. " << 20 << endl;
  438. for (int i = 0; i < 10; i++)
  439. {
  440. ris_casa = rand() % 6;
  441. ris_ospite = rand() % 6;
  442. appoggio = c + i;
  443. stampa_partite(M, appoggio, v, j1, j2);
  444. cout <<"\t"<< ris_casa << " - " << ris_ospite << endl;
  445. }
  446. c += 10;
  447. cout << endl;
  448. }
  449. }
  450.  
  451. void campionato::classifica(team v[]) {
  452. int n = 20;
  453. int min, temp;
  454. cout << "Squadra" << "\t" << "Punti" << "\t" << "V" << "\t" << "P" << "\t" << "S" << "\t" << "GF" << "\t" << "GS" <<"\t" << "DR" << endl;
  455. for (int i = 0; i < 20; i++)
  456. {
  457. 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;
  458. }
  459. }
  460.  
  461. void campionato::risultato(team v[], int ris_casa, int ris_ospite, int j1, int j2)
  462. {
  463. cout << j1 << " " << j2 << endl;
  464. if (ris_casa > ris_ospite)
  465. {
  466. v[j1].punti += 3;
  467. v[j1].vittorie += 1;
  468. v[j1].gol_fatti += ris_casa;
  469. v[j1].gol_subiti += ris_ospite;
  470. v[j1].diff_reti += (v[j1].gol_fatti - v[j1].gol_subiti);
  471. v[j2].sconfitte += 1;
  472. v[j2].gol_fatti += ris_ospite;
  473. v[j2].gol_subiti += ris_casa;
  474. v[j2].diff_reti += (v[j2].gol_fatti - v[j2].gol_subiti);
  475. }
  476. else if (ris_casa < ris_ospite)
  477. {
  478. v[j2].punti += 3;
  479. v[j2].vittorie += 1;
  480. v[j2].gol_fatti += ris_ospite;
  481. v[j2].gol_subiti += ris_casa;
  482. v[j2].diff_reti += (v[j2].gol_fatti - v[j2].gol_subiti);
  483. v[j1].sconfitte += 1;
  484. v[j1].gol_fatti += ris_casa;
  485. v[j1].gol_subiti += ris_ospite;
  486. v[j1].diff_reti += (v[j1].gol_fatti - v[j1].gol_subiti);
  487. }
  488. else
  489. {
  490. v[j1].punti += 1;
  491. v[j1].pareggi += 1;
  492. v[j1].gol_fatti += ris_casa;
  493. v[j1].gol_subiti += ris_ospite;
  494. v[j1].diff_reti += (v[j1].gol_fatti - v[j1].gol_subiti);
  495. v[j2].punti += 1;
  496. v[j2].pareggi += 1;
  497. v[j2].gol_fatti += ris_ospite;
  498. v[j2].gol_subiti += ris_casa;
  499. v[j2].diff_reti += (v[j2].gol_fatti - v[j2].gol_subiti);
  500. }
  501. }Gig
  502. else
  503. {
  504. v[j1].punti += 1;
  505. v[j1].pareggi += 1;
  506. v[j1].gol_fatti += ris_casa;
  507. v[j1].gol_subiti += ris_ospite;
  508. v[j1].diff_reti += (v[j1].gol_fatti - v[j1].gol_subiti);
  509. v[j2].punti += 1;
  510. v[j2].pareggi += 1;
  511. v[j2].gol_fatti += ris_ospite;
  512. v[j2].gol_subiti += ris_casa;
  513. v[j2].diff_reti += (v[j2].gol_fatti - v[j2].gol_subiti);
  514. }
  515. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement