Skip to content

Instantly share code, notes, and snippets.

Created October 15, 2015 19:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/b301cc9e9e52d91185ec to your computer and use it in GitHub Desktop.
Save anonymous/b301cc9e9e52d91185ec to your computer and use it in GitHub Desktop.
#include <iostream>
#include "string"
#include <vector>
#include <iomanip>
#include <fstream>
#include <array>
using namespace std;
struct dadosEquipas {
char nomeEquipa[30];
int lugarCampeonato;
int numPontos;
int numJogos;
int numVitorias;
int numEmpates;
int numDerrotas;
int golosMarcados;
int golosSofridos;
int diferencaGolos;
} infequipas[18];
struct myclass {
bool operator() (dadosEquipas const &abc, dadosEquipas const &ABC) { return (abc.numPontos>ABC.numPontos); }
} myobject;
struct myclass2 {
bool operator() (dadosEquipas const &abc, dadosEquipas const &ABC) { return (abc.diferencaGolos>ABC.diferencaGolos); }
} myobject2;
char auxiliar1[30], auxiliar2[30];
char escolha;
bool jogoAnulado = false;
bool jogo1 = false;
bool campeonatoVazio = true;
bool comparaCasa = false;
bool comparaFora = false;
bool pontosIguais;
const int numEquipas = 18;
const int numJornadas = 34;
string equipas[numEquipas];
string equipaCasa, equipaFora;
string equipa1, equipa2;
int auxFora = 0;
int auxCasa = 0;
int golosCasa, golosFora;
void menuPrincipal();
int main() {
menuPrincipal();
system("PAUSE");
return 0;
};
void menuPrincipal() {
system("cls");
int opcao;
cout << "\n\t\t\t\t Menu Inicial" << endl;
cout << setfill('=') << setw(80) << "\n" << setfill(' ') << endl;
cout << "\t\t\t 1. Introduzir resultado do jogo\n" << endl;
cout << "\t\t\t 2. Anular o ultimo jogo\n" << endl;
cout << "\t\t\t 3. Ver tabela de pontuacoes\n" << endl;
cout << "\t\t\t 4. (Re)Iniciar campeonato\n" << endl;
cout << "\t\t\t 5. Guardar alteracoes\n" << endl;
cout << "\t\t\t 6. Eliminar dados\n" << endl;
cout << "\t\t\t 0. Sair\n" << endl;
cin >> opcao;
while (cin.fail() || opcao > 6 || opcao < 0)
{
cin.clear();
cin.ignore(400, '\n');
cout << "Introduza uma opcao valida \n";
cin >> opcao;
}
cin.sync();
switch (opcao) {
case 1:
if (campeonatoVazio) {
cout << "Erro! O campeonato nao foi iniciado! Pressione enter para continuar!" << endl;
cin.clear();
cin.ignore(400, '\n');
menuPrincipal();
}
system("cls");
comparaCasa = false;
cout << "\n\t\t\t Resultado da partida!" << endl << endl;
cout << setfill('=') << setw(80) << "\n" << setfill(' ') << endl;
cout << "Qual foi a equipa que jogou em casa?" << endl;
getline(cin, equipaCasa);
cout << '\n';
while (true) {
for (int i = 0; i < numEquipas; i++) {
if (equipaCasa == infequipas[i].nomeEquipa) {
auxCasa = i;
comparaCasa = true;
break;
}
}
if (comparaCasa) break;
cin.clear();
cout << "A equipa nao participa neste campeonato!\n";
getline(cin, equipaCasa);
cout << "\n";
}
cin.sync();
cout << "Quantos golos marcou?" << endl;
cin >> golosCasa;
cout << '\n';
while (cin.fail() || golosCasa < 0)
{
cin.clear();
cin.ignore(400, '\n');
cout << "Introduza um numero valido \n";
cin >> golosCasa;
}
cin.sync();
cout << "Qual foi a equipa que jogou fora?" << endl;
comparaFora = false;
getline(cin, equipaFora);
cout << '\n';
while (true) {
for (int i = 0; i < numEquipas; i++) {
if (equipaFora == infequipas[i].nomeEquipa) {
auxFora = i;
comparaFora = true;
break;
}
}
if (comparaFora) break;
cin.clear();
cout << "A equipa nao participa neste campeonato!\n";
getline(cin, equipaFora);
cout << "\n";
}
cin.sync();
cout << "Quantos golos marcou?" << endl;
cin >> golosFora;
cout << '\n';
while (cin.fail() || golosFora < 0)
{
cin.clear();
cin.ignore(400, '\n');
cout << "Introduza um numero valido \n";
cin >> golosFora;
cout << "\n";
}
cin.sync();
if (golosCasa > golosFora) {
infequipas[auxCasa].numPontos += 3;
infequipas[auxCasa].numJogos++;
infequipas[auxCasa].numVitorias++;
infequipas[auxCasa].golosMarcados += golosCasa;
infequipas[auxCasa].golosSofridos += golosFora;
infequipas[auxCasa].diferencaGolos = infequipas[auxCasa].golosMarcados - infequipas[auxCasa].golosSofridos;
infequipas[auxFora].numJogos++;
infequipas[auxFora].numDerrotas++;
infequipas[auxFora].golosMarcados += golosFora;
infequipas[auxFora].golosSofridos += golosCasa;
infequipas[auxFora].diferencaGolos = infequipas[auxFora].golosMarcados - infequipas[auxFora].golosSofridos;
}
else if (golosFora>golosCasa) {
infequipas[auxCasa].numJogos++;
infequipas[auxCasa].numDerrotas++;
infequipas[auxCasa].golosMarcados += golosCasa;
infequipas[auxCasa].golosSofridos += golosFora;
infequipas[auxCasa].diferencaGolos = infequipas[auxCasa].golosMarcados - infequipas[auxCasa].golosSofridos;
infequipas[auxFora].numPontos += 3;
infequipas[auxFora].numJogos++;
infequipas[auxFora].numVitorias++;
infequipas[auxFora].golosMarcados += golosFora;
infequipas[auxFora].golosSofridos += golosCasa;
infequipas[auxFora].diferencaGolos = infequipas[auxFora].golosMarcados - infequipas[auxFora].golosSofridos;
}
else if (golosFora == golosCasa) {
infequipas[auxCasa].numPontos++;
infequipas[auxCasa].numJogos++;
infequipas[auxCasa].numEmpates++;
infequipas[auxCasa].golosMarcados += golosCasa;
infequipas[auxCasa].golosSofridos += golosFora;
infequipas[auxCasa].diferencaGolos = infequipas[auxCasa].golosMarcados - infequipas[auxCasa].golosSofridos;
infequipas[auxFora].numPontos++;
infequipas[auxFora].numJogos++;
infequipas[auxFora].numEmpates++;
infequipas[auxFora].golosMarcados += golosFora;
infequipas[auxFora].golosSofridos += golosCasa;
infequipas[auxFora].diferencaGolos = infequipas[auxFora].golosMarcados - infequipas[auxFora].golosSofridos;
};
jogoAnulado = false;
jogo1 = true;
cout << "Pressione enter para voltar ao menu inicial" << endl;
if (cin.get() == '\n') {
menuPrincipal();
}
case 2:
if (campeonatoVazio) {
cout << "Erro! O campeonato nao foi iniciado! Pressione enter para continuar!" << endl;
cin.clear();
cin.ignore(400, '\n');
menuPrincipal();
}
if (jogoAnulado) {
cout << "Erro! Ja anulou o ultimo jogo! Pressione enter para continuar!" << endl;
cin.clear();
cin.ignore(400, '\n');
menuPrincipal();
}
if (jogo1 == false) {
cout << "Erro! Ainda nao introduziu os dados do 1o jogo! Pressione enter para continuar!" << endl;
cin.clear();
cin.ignore(400, '\n');
menuPrincipal();
}
system("cls");
cout << "Tem mesmo a certeza que prentende anular o ultimo jogo? (s ou n)\n";
cin >> escolha;
while (cin.fail() && escolha != 's' && escolha != 'n') {
cin.clear();
cin.ignore(400, '\n');
cout << "Introduziu uma opcao desconhecida! \n";
cin >> escolha;
}
if (escolha == 's') {
for (int a = 0; a < numEquipas; a++) {
if (equipaCasa == infequipas[a].nomeEquipa) {
if (golosCasa > golosFora) {
infequipas[a].numPontos -= 3;
infequipas[a].numJogos--;
infequipas[a].numVitorias--;
infequipas[a].golosMarcados -= golosCasa;
infequipas[a].golosSofridos -= golosFora;
infequipas[a].diferencaGolos = infequipas[a].golosMarcados - infequipas[a].golosSofridos;
}
else if (golosFora > golosCasa) {
infequipas[a].numJogos--;
infequipas[a].numDerrotas--;
infequipas[a].golosMarcados -= golosCasa;
infequipas[a].golosSofridos -= golosFora;
infequipas[a].diferencaGolos = infequipas[a].golosMarcados - infequipas[a].golosSofridos;
}
else if (golosFora == golosCasa) {
infequipas[a].numPontos--;
infequipas[a].numJogos--;
infequipas[a].numEmpates--;
infequipas[a].golosMarcados -= golosCasa;
infequipas[a].golosSofridos -= golosFora;
infequipas[a].diferencaGolos = infequipas[a].golosMarcados - infequipas[a].golosSofridos;
};
}
if (equipaFora == infequipas[a].nomeEquipa) {
if (golosCasa > golosFora) {
infequipas[a].numJogos--;
infequipas[a].numDerrotas--;
infequipas[a].golosMarcados -= golosFora;
infequipas[a].golosSofridos -= golosCasa;
infequipas[a].diferencaGolos = infequipas[a].golosMarcados - infequipas[a].golosSofridos;
}
else if (golosFora > golosCasa) {
infequipas[a].numPontos -= 3;
infequipas[a].numJogos--;
infequipas[a].numVitorias--;
infequipas[a].golosMarcados -= golosFora;
infequipas[a].golosSofridos -= golosCasa;
infequipas[a].diferencaGolos = infequipas[a].golosMarcados - infequipas[a].golosSofridos;
}
else if (golosFora == golosCasa) {
infequipas[a].numPontos--;
infequipas[a].numJogos--;
infequipas[a].numEmpates--;
infequipas[a].golosMarcados -= golosFora;
infequipas[a].golosSofridos -= golosCasa;
infequipas[a].diferencaGolos = infequipas[a].golosMarcados - infequipas[a].golosSofridos;
};
}
}
jogoAnulado = true;
cin.sync();
cout << "Pressione enter para voltar ao menu inicial" << endl;
if (cin.get() == '\n') {
menuPrincipal();
};
}
else if (escolha == 'n')
{
cin.sync();
cout << "Pressione enter para voltar ao menu inicial" << endl;
if (cin.get() == '\n') {
menuPrincipal();
};
}
case 3:
if (campeonatoVazio) {
cout << "Erro! O campeonato nao foi iniciado! Pressione enter para continuar!" << endl;
cin.clear();
cin.ignore(400, '\n');
menuPrincipal();
}
else {
system("cls");
sort(infequipas, infequipas + numEquipas, myobject);
int i;
int j = 0;
while (j < numEquipas) {
i = j;
while (i < numEquipas && infequipas[i].numPontos == infequipas[i + 1].numPontos) {
i++;
}
sort(infequipas + j, infequipas + i, myobject2);
j = i + 1;
}
for (int l = 0; l < numEquipas; l++) {
infequipas[l].lugarCampeonato = l + 1;
}
cout << setfill('=') << setw(80) << "=" << setfill(' ') << endl;
cout << setw(5) << "Pos." << setw(20) << "Equipa" << setw(8) << "Jorn." << setw(6) << "Pont." << setw(6) << "Vit." << setw(6) << "Emp." << setw(6) << "Der." << setw(6) << "GM." << setw(6) << "GS." << setw(6) << "DG. " << endl;
cout << setfill('=') << setw(80) << "=" << setfill(' ') << endl << endl;
for (int i = 0; i < numEquipas; i++) {
cout << setw(5) << infequipas[i].lugarCampeonato << setw(20) << infequipas[i].nomeEquipa << setw(8) << infequipas[i].numJogos << setw(6) << infequipas[i].numPontos << setw(6) << infequipas[i].numVitorias << setw(6) << infequipas[i].numEmpates << setw(6) << infequipas[i].numDerrotas << setw(6) << infequipas[i].golosMarcados << setw(6) << infequipas[i].golosSofridos << setw(6) << infequipas[i].diferencaGolos << endl << endl;
cout << setfill('=') << setw(80) << "=" << setfill(' ') << endl << endl;
}
cout << "Pressione enter para voltar ao menu inicial" << endl;
if (cin.get() == '\n') {
menuPrincipal();
}
};
case 4:
system("cls");
if (campeonatoVazio) {
cout << "\n\t\t\t Atencao! O campeonato nao foi iniciado!" << endl << endl;
cout << setfill('*') << setw(80) << "\n" << setfill(' ') << endl;
cout << "Introduza os dados iniciais!" << endl << endl;
for (int i = 0; i < numEquipas; i++) {
cout << "Introduza o nome da " << i + 1 << "a equipa:\n";
getline(cin, equipas[i]);
strcpy_s(infequipas[i].nomeEquipa, equipas[i].c_str());
cout << '\n';
}
campeonatoVazio = false;
cout << "Pressione enter para voltar ao menu inicial" << endl;
if (cin.get() == '\n') {
menuPrincipal();
};
};
if (campeonatoVazio == false) {
cout << "Qual e a 1a equipa que sobe de divisao?" << endl;
getline(cin, equipa1);
cout << '\n';
cout << "Qual e a 2a equipa que sobe de divisao?" << endl;
getline(cin, equipa2);
cout << '\n';
for (int b = 0; b < numEquipas; b++) {
if (infequipas[b].lugarCampeonato == 17) strcpy_s(infequipas[b].nomeEquipa, equipa1.c_str());
if (infequipas[b].lugarCampeonato == 18) strcpy_s(infequipas[b].nomeEquipa, equipa2.c_str());
}
for (int b = 0; b < numEquipas; b++) {
infequipas[b].numPontos = 0;
infequipas[b].numJogos = 0;
infequipas[b].numVitorias = 0;
infequipas[b].numEmpates = 0;
infequipas[b].numDerrotas = 0;
infequipas[b].golosMarcados = 0;
infequipas[b].golosSofridos = 0;
infequipas[b].diferencaGolos = 0;
}
jogo1 = false;
cout << "Pressione enter para voltar ao menu inicial" << endl;
if (cin.get() == '\n') {
menuPrincipal();
};
};
case 5:
if (campeonatoVazio) {
cout << "Erro! O campeonato nao foi iniciado! Pressione enter para continuar!" << endl;
cin.clear();
cin.ignore(400, '\n');
menuPrincipal();
}
system("cls");
cout << "Deseja guardar as alteracoes efetuadas? (s ou n)\n";
cin >> escolha;
while (cin.fail() && escolha != 's' && escolha != 'n') {
cin.clear();
cin.ignore(400, '\n');
cout << "Introduziu uma opcao desconhecida! \n";
cin >> escolha;
}
if (escolha == 'n') {
cin.sync();
cout << "Pressione enter para voltar ao menu inicial" << endl;
if (cin.get() == '\n') {
menuPrincipal();
};
}
else if (escolha == 's') {
cin.sync();
ofstream myfile("informacoesEquipas.txt");
if (myfile.is_open()) {
for (int u = 0; u < numEquipas; u++) {
myfile << "\n *** Lugar no Campeonato: *** \n";
myfile << infequipas[u].lugarCampeonato << "\n";
myfile << "Nome da Equipa:\n";
myfile << infequipas[u].nomeEquipa << "\n";
myfile << "Numero de Jogos:\n";
myfile << infequipas[u].numJogos << "\n";
myfile << "Numero de Pontos:\n";
myfile << infequipas[u].numPontos << "\n";
myfile << "Numero de Vitorias:\n";
myfile << infequipas[u].numVitorias << "\n";
myfile << "Numero de Empates:\n";
myfile << infequipas[u].numEmpates << "\n";
myfile << "Numero de Derrotas:\n";
myfile << infequipas[u].numDerrotas << "\n";
myfile << "Golos Marcados:\n";
myfile << infequipas[u].golosMarcados << "\n";
myfile << "Golos Sofridos:\n";
myfile << infequipas[u].golosSofridos << "\n";
myfile << "Diferença de Golos:\n";
myfile << infequipas[u].diferencaGolos << "\n";
};
myfile.close();
}
else cout << "Unable to open file";
ofstream myfile2("jogoAnulado.txt");
if (myfile2.is_open()) {
/*if (jogoAnulado) {*/
myfile2 << jogoAnulado;
/*}
else myfile2 << 0;*/
myfile2.close();
}
else cout << "Unable to open file";
ofstream myfile3("jogo1.txt");
if (myfile3.is_open()) {
if (jogo1) myfile3 << 1;
else myfile3 << 0;
myfile.close();
}
else cout << "Unable to open file";
ofstream myfile4("campeonatoVazio.txt");
if (myfile4.is_open()) {
if (campeonatoVazio) myfile4 << 1;
else myfile4 << 0;
myfile4.close();
}
else cout << "Unable to open file";
ofstream myfile5("equipaCasa.txt");
if (myfile5.is_open()) {
myfile5 << equipaCasa;
myfile5.close();
}
else cout << "Unable to open file";
ofstream myfile6("equipaFora.txt");
if (myfile6.is_open()) {
myfile6 << equipaFora;
myfile6.close();
}
else cout << "Unable to open file";
ofstream myfile7("auxCasa.txt");
if (myfile7.is_open()) {
myfile7 << auxCasa;
myfile7.close();
}
else cout << "Unable to open file";
ofstream myfile8("auxFora.txt");
if (myfile8.is_open()) {
myfile8 << auxFora;
myfile8.close();
}
else cout << "Unable to open file";
ofstream myfile9("golosCasa.txt");
if (myfile9.is_open()) {
myfile9 << golosCasa;
myfile9.close();
}
else cout << "Unable to open file";
ofstream myfile10("golosFora.txt");
if (myfile10.is_open()) {
myfile10 << golosFora;
myfile10.close();
}
else cout << "Unable to open file";
}
cout << "Pressione enter para voltar ao menu inicial" << endl;
if (cin.get() == '\n') {
menuPrincipal();
};
case 6:
if (campeonatoVazio) {
cout << "Erro! O campeonato nao foi iniciado! Pressione enter para continuar!" << endl;
cin.clear();
cin.ignore(400, '\n');
menuPrincipal();
}
system("cls");
cout << "Tem mesmo a certeza que prentende eliminar os dados? (s ou n)\n";
cin >> escolha;
while (cin.fail() && escolha != 's' && escolha != 'n') {
cin.clear();
cin.ignore(400, '\n');
cout << "Introduziu uma opcao desconhecida! \n";
cin >> escolha;
}
if (escolha == 's') {
campeonatoVazio = true;
cin.sync();
cout << "Pressione enter para voltar ao menu inicial" << endl;
if (cin.get() == '\n') {
menuPrincipal();
};
}
else if (escolha == 'n')
{
campeonatoVazio = false;
cin.sync();
cout << "Pressione enter para voltar ao menu inicial" << endl;
if (cin.get() == '\n') {
menuPrincipal();
};
}
case 0:
cout << "Enter para sair..." << endl;
if (cin.get() == '\n') {
exit(EXIT_FAILURE);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment