Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
rjmpires

[Ajuda] Tabela classificativa da Liga Sagres =D

Recommended Posts

rjmpires

Boas pessoal,

É o seguinte... Estou a tirar um curso de redes informáticas e tenho uma disciplina de programação que me está a rebentar o juízo  🤔

Tenho um programa para fazer que tem por base a tabela classificativa da Liga Sagres!! E o professor disse para fazermos o trabalho com vectores, estruturas e ficheiros...

O prof deu 4 ficheiros .txt de jornada e 1 da classificação :

-------------------------- 1_jorn.txt

1jornada - 15-8-2009

Leixoes 0 0 Belenenses

Nacional 1 1 Sporting

SP.Braga 1 0 Academica

Naval 0 0 Olhanense

U.Leiria 1 1 Rio.Ave

P.Ferreira 1 1 FC.Porto

Benfica 1 1 Maritimo

V.Setubal 0 0 V.Guimaraes

-------------------------- 2_jorn.txt

2jornada - 22-8-2009

Olhanense 0 0 U.Leiria

Academica 1 1 P.Ferreira

Sporting 1 2 SP.Braga

Maritimo 1 0 Leixoes

Rio.Ave 1 0 V.Setubal

V.Guimaraes 0 1 Benfica

FC.Porto 3 0 Nacional

Belenenses 2 0 Naval

-------------------------- 3_jorn.txt

3jornada - 30-8-2009

P.Ferreira 0 0 V.Guimaraes

Naval 1 3 FC.Porto

U.Leiria 0 0 Maritimo

Leixoes 0 0 Rio.Ave

SP.Braga 3 1 Belenenses

Academica 0 2 Sporting

Nacional 1 1 Olhanense

Benfica 8 1 V.Setubal

-------------------------- 4_jorn.txt

4jornada - 13-9-2009

V.Guimaraes 3 0 Naval

Rio.Ave 2 0 Nacional

FC.Porto 4 1 Leixoes

Maritimo 1 2 SP.Braga

Olhanense 2 1 Academica

V.Setubal 0 4 U.Leiria

Belenenses 0 4 Benfica

Sporting 1 0 P.Ferreira

-------------------------- classifi.txt

Benfica 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

SP.Braga 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

FC.Porto 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Sporting 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

U.Leiria 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Maritimo 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Nacional 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

V.Guimaraes 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Rio.Ave 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

P.Ferreira 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Academica 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Naval 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Olhanense 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

V.Setubal 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Leixoes 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Belenenses 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

A partir disso eu e um colega meu fizemos o seguinte...

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <vector>
#include <string>

using namespace std;
typedef struct jornada
{
        string eq_casa;
        int golo_casa;
        int golo_fora;
        string eq_fora;
};
typedef struct tabela
{
    string equipa;
    int pontos;
    int vit_casa, emp_casa, derro_casa, golmarca_casa, golsofre_casa;
    int vit_fora, emp_fora, derro_fora, golmarca_fora, golsofre_fora;
    int vitoria, golo_marcado, golo_sofrido,empate,derrota,jog_casa,jogo_fora,jog;
};

int main(int argc, char *argv[])
{
    string line;
    int i,j,opc;
    ifstream clas;
    ifstream futebol;
    ofstream classi;
    ifstream jornadas;
    vector<tabela> vec1;
    vector<jornada> vec;
    vector<jornada>:: iterator iter;
    vector<tabela>:: iterator iter1;
    jornada jorn;
    tabela jogo;
    clas.open("classifi.txt");

    
    cout<< "       menu     "<<endl;
    cout<<" 1- Listar"<<endl;
    cout<<" 2- Prossear"<<endl;
    cout<<" 3- Sair"<<endl;
    cin>>opc;
    switch(opc)
    {
      case 1:
           {
               while(! clas.eof());
                 {
                       getline(clas, line);
                       cout<< line << endl;
                 }
      case 2:
           {
             futebol.open("jogo.txt");
             jornadas.open("jogo"  "_jorn.txt");    
             jornadas>> line ;
             jornadas>> line ;
             jornadas>> line ;
             while(! jornadas.eof())
               {
                     jornadas>> jorn.eq_casa;
                     jornadas>> jorn.golo_casa;
                     jornadas>> jorn.golo_fora;
                     jornadas>> jorn.eq_fora;
                     vec.push_back(jorn);
               }
             while(! clas.eof())
               {
                     clas >> jogo.equipa;
                     clas >> jogo.pontos;
                     clas >> jogo.jog;
                     clas >> jogo.vitoria;
                     clas >> jogo.empate;
                     clas >> jogo.derrota;
                     clas >> jogo.golo_marcado;
                     clas >> jogo.golo_sofrido;
                     clas >> jogo.jog_casa;
                     clas >> jogo.vit_casa;
                     clas >> jogo.emp_casa;
                     clas >> jogo.derro_casa;
                     clas >> jogo.golmarca_casa;
                     clas >> jogo.golsofre_casa;
                     clas >> jogo.jogo_fora;
                     clas >> jogo.vit_fora;
                     clas >> jogo.emp_fora;
                     clas >> jogo.derro_fora;
                     clas >> jogo.golmarca_fora;
                     clas >> jogo.golsofre_fora;
                     vec1.push_back(jogo);
               }
             for(i=0;i<vec1.size();i++)
               {
                 for(j=0;j<vec.size();j++)
                    {
                       if(vec1[i].equipa== vec[j].eq_casa )
                         {        
                             vec1[i].jog = vec1[i].jog  + 1;
                             vec1[i].golo_marcado  = vec1[i].golo_marcado + vec[j].golo_casa;
                             vec1[i].golo_sofrido  = vec1[i].golo_sofrido + vec[j].golo_fora;
                             vec1[i].golmarca_casa  = vec1[i].golmarca_casa + vec[j].golo_casa;
                             vec1[i].golsofre_casa  = vec1[i].golsofre_casa + vec[j].golo_fora;
                             if (vec[j].golo_casa > vec[j].golo_fora)
                                {
                                    vec1[i].vit_casa= vec1[i].vit_casa+1;
                                    vec1[i].vitoria = vec1[i].vitoria +1;
                                    vec1[i].pontos = vec1[i].pontos +3 ;
                                }
                             if (vec[j].golo_casa < vec[j].golo_fora)
                                {
                                    vec1[i].derro_casa= vec1[i].derro_casa+1;
                                    vec1[i].derrota = vec1[i].derrota +1;
                                }
                             if (vec[j].golo_casa == vec[j].golo_fora)
                                {
                                    vec1[i].emp_casa= vec1[i].emp_casa+1;
                                    vec1[i].empate = vec1[i].empate +1;
                                    vec1[i].pontos = vec1[i].pontos +1 ;
                                }
                         }
                    if(vec1[i].equipa== vec[j].eq_fora )
                      {        
                         vec1[i].jog = vec1[i].jog  + 1;
                         vec1[i].golo_marcado  = vec1[i].golo_marcado + vec[j].golo_fora;
                         vec1[i].golo_sofrido  = vec1[i].golo_sofrido + vec[j].golo_casa;
                         vec1[i].golmarca_fora  = vec1[i].golmarca_fora + vec[j].golo_fora;
                         vec1[i].golsofre_fora = vec1[i].golsofre_fora + vec[j].golo_casa;
                         if (vec[j].golo_fora > vec[j].golo_casa)
                            {
                                vec1[i].vit_fora= vec1[i].vit_fora+1;
                                vec1[i].vitoria = vec1[i].vitoria +1;
                                vec1[i].pontos = vec1[i].pontos +3 ;
                            }
                         if (vec[j].golo_casa < vec[j].golo_fora)
                            {
                                vec1[i].derro_fora= vec1[i].derro_fora+1;
                                vec1[i].derrota = vec1[i].derrota +1;
                            }
                         if (vec[j].golo_casa == vec[j].golo_fora)
                            {
                                vec1[i].emp_fora= vec1[i].emp_fora+1;
                                vec1[i].empate = vec1[i].empate +1;
                                vec1[i].pontos = vec1[i].pontos +1 ;
                            }
                      }
                 }
           }
      }      
      case 3:break;      
    }
    for(i=0;i<vec1.size();i++)
    {
     cout<< vec1[i].pontos << endl;
    }
}
    classi.open("classifi.txt");
    cout<< vec1[0].equipa;
    clas.close();
    classi.close();
    jornadas.close();
    system("PAUSE");
    return EXIT_SUCCESS;
}

--------------------------------

Mas aparentemente há coisas mal.. ou falta delas

O Objectivo principal seria adicionar jornada a jornada.. e Quando o utilizador quisesse, poder mostrar a tabela classificativa até à jornada carregada.

Se alguem pudesse dar um olho a isso... e dar umas dicas de como fazer melhor.. agradecia!

Obrigado!  :thumbsup:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.