Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

rjmpires

[Ajuda] Tabela classificativa da Liga Sagres =D

Mensagens Recomendadas

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  :hmm:

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:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.