-
Notifications
You must be signed in to change notification settings - Fork 0
/
CompeticaoMultimodalidades.cpp
100 lines (73 loc) · 2.81 KB
/
CompeticaoMultimodalidades.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include "CompeticaoMultimodalidades.h"
#include <iostream>
#include <string>
#include <stdexcept>
#include <list>
#include <vector>
#include "Competicao.h"
#include "Equipe.h"
#include "Modalidade.h"
#include "Tabela.h"
#include "TabelaComPontos.h"
#include "TabelaComOrdem.h"
using namespace std;
vector<int>* CompeticaoMultimodalidades::pontuacao = new vector<int>({13, 10, 8, 7, 5, 4, 3, 2, 1}); //VALOR INCINIAL DESRE ATRIBUTO ESTATICO
CompeticaoMultimodalidades::CompeticaoMultimodalidades(string nome, Equipe** equipes, int quantidade) : Competicao(nome, equipes, quantidade)
{
if(quantidade < 2)
throw new invalid_argument("Numero de equipes menor que 2");
this->modalidades = new list<Modalidade*>();
}
CompeticaoMultimodalidades::~CompeticaoMultimodalidades() {
//
}
void CompeticaoMultimodalidades::adicionar(Modalidade* m)
{
modalidades->push_back(m);
hasModalidade = true;
}
list<Modalidade*>* CompeticaoMultimodalidades::getModalidades()
{
return modalidades;
}
void CompeticaoMultimodalidades::setPontuacao(vector<int>* pontos)
{
if(pontos->size() < 3)
throw new invalid_argument("Que vetor mixuruca kk");
CompeticaoMultimodalidades::pontuacao = pontos;
}
int CompeticaoMultimodalidades::getPontoPorPosicao(int posicao) //UNSIGNED? sdjfdkjsnmxc
{
unsigned int posi = posicao;
if(posi <= 0 || posi > CompeticaoMultimodalidades::pontuacao->size())
return 0;
else
return CompeticaoMultimodalidades::pontuacao->at(posi - 1);
}
Tabela* CompeticaoMultimodalidades::getTabela() //NOT SURE ABOUT ALL OF THIS
{
TabelaComPontos* retorno = new TabelaComPontos(equipes, quantidade);
list<Modalidade*>::iterator i = modalidades->begin();
while(i != modalidades->end()) { //O END EH O NULL
if((*i)->temResultado() == true){
int quantidadeEquipesNaModalidade = (*i)->getQuantidadeDeEquipes(); //QUANTIDADE DE EQUIPES NESTA MODALIDADE
/* FOI TRISTE???? NAO FUNFOU, BUT IT SHOULD
TabelaComOrdem* resultadoDaModalidade = (*i)->getTabela; //PEGA A TABELA COM ORDEM/RESULTADO DA MODALIDADE
Equipe** ordemDasEquipes = resultadoDaModalidade->getEquipesEmOrdem(); // PEGA O VETOR COM A ORDEM DAS EQUIPES
*/
Equipe** ordemEquipes = (*i)->getTabela()->getEquipesEmOrdem(); // PEGA O VETOR COM A ORDEM DAS EQUIPES
for(int j = 0; j < quantidadeEquipesNaModalidade; j++) {
retorno->pontuar(ordemEquipes[j], CompeticaoMultimodalidades::pontuacao->at(j)); //ATRIBUI A PONTUACAO CORRESPONDENTE DA EQUIPE NESTA MODALDIDAE DE ACORDO COM O VECTOR ESTATICO
}
}
i++;
}
return retorno;
}
void CompeticaoMultimodalidades::imprimir()
{
cout << nome << endl;
if(hasModalidade != false) {
getTabela()->imprimir();
}
}