Jump to content
Jrthozy

Criar programa torneio de futsal

Recommended Posts

Jrthozy

Olá!!!

Há algum tempo eu venho tentando  :wallbash: fzr um programa para contabilização em um torneio de futsal onde jogam 16 equipas!

Mas sempre falta algo! :) Eu queria q o programa contabilizasse os golos marcados e inserisse na classificação para ajudar em criterios desempate... 🤔 (cada vitoria 3 pontos, cada derrota 0, empate 1)

Tipo isso:

|Torneio da Escola                                    |

|Equipa_________|Pontos____|Golos_____|

|equipa1            |      6        |    9          |

|equipa2            |      6        |    8          |

|equipa3            |      5        |    5          |

e ...

alguem help me?

Share this post


Link to post
Share on other sites
brunoais

O que é que ele faz que não devia fazer?

O que é que ele devia fazer que não faz?

Alguma suspeita de aonde estejam coisas em falta (codigo/funcionalidades)?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
Jrthozy

Mais ou menos com os criterios deste --> http://www.konkuri.com/      :cheesygrin:    ...    :down: nao consigo fazer a parte da classificação (tipo classificação por golos ,vitorias e pontos) apos a entrada dos resultados de cada jornada

Cumps  :(

Share this post


Link to post
Share on other sites
KTachyon

Pois, mas isso vai depender de como tens estruturadas as coisas. Como consegues derivar as pontuações através dos resultados, em principio será a única coisa que irás ter que guardar (em conjunto com os identificadores das equipas, para que possas distinguir a que equipas pertence cada resultado, obviamente).


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
Jrthozy

Eu sei... mas enrolo-me todo com a situação da classificação.

Vejam a situaçao:

[em vez de 16 equipas, são  8 ! O torneio possui 2 grupos: A e B, fase de grupos e play-offs] vitoria - 3pts; empate -1pt; derrota - 0pt

Depois de ler o nome das equipas...

O programa faria isso:

                        Grupo A

|Equipa_________|_Pontos___|Golos_____|

|equipa 1            |      0        |      0        |

|equipa 2            |      0        |      0        |

|equipa 3            |      0        |      0        |

|equipa 4            |      0        |      0        |

                        Grupo B

|Equipa_________|_Pontos___|Golos_____|

|equipa 5            |      0        |      0        |

|equipa 6            |      0        |      0        |

|equipa 7            |      0        |      0        |

|equipa 8            |      0        |      0        |

                      JORNADA 1 - GRUPO A

                                  JOGO1

                        equipa 1 X equipa 4

                                  JOGO2

                        equipa 2 X equipa 3

                      JORNADA 1 - GRUPO B

                                  JOGO3

                        equipa 5 X equipa 8

                                  JOGO4

                        equipa 6 X equipa 7

                              RESULTADOS

JOGO 1

Golos equipa1 --> 5          <------------------------ O utilizador introduz os dados

Golos equipa4 --> 2          <-----------------------|

                                                                      |

JOGO 2                                                            |

Golos equipa2 --> 1      <--------------------------|

Golos equipa3 --> 2      <--------------------------|

                                                                      |

JOGO 3                                                            |

Golos equipa5 --> 4      <--------------------------|

Golos equipa8 --> 2      <--------------------------|

                                                                      |

JOGO 4                                                            |

Golos equipa6 --> 2      <--------------------------|

Golos equipa7 --> 2      <--------------------------|

                              CLASSIFICAÇÃO

                        Grupo A

|  |____Equipa_____|_Pontos___|Golos_____|

1º|equipa 1            |      3        |      5        |    <--- ESTA EM 1º PQ TEM 3 PONTOS COMO O 2º, MAS MARCOU MAIS GOLOS

2º|equipa 3            |      3        |      2        | <-----------------2º---------------------------------1º,----------------MENOS--------

3º|equipa 4            |      0        |      2        |<---ESTA EM 3º PQ TEM - PONTOS (0) Q O 1º E 2º, MAS MARCOU MAIS GOLOS Q O 4º

4º|equipa 2            |      0        |      1        |<-------------4º---------------------------------------------------------MENOS-------------3º

                        Grupo B

|  |____Equipa_____|_Pontos___|Golos_____|

1º|equipa 5            |      3        |      4        |  <--- ESTA EM 1º PQ TEM MAIOR Nº DE PONTOS (3) E MARCOU MAIS GOLOS

2º|equipa 6            |      1        |      2        |  <--- ESTA EM 2º PQ TEM - PONTOS E - GOLOS (0)(2) Q O 1º-inscreveu-se antes do 3º

3º|equipa 7            |      1        |      2        |<- ESTA EM 3º PQ TEM - PONTOS E - GOLOS (0)(2) Q O 1º-inscreveu-se depois do 2º ^

4º|equipa 8            |      0        |      2        |<--- ESTA EM 4º PQ TE MENOS PONTOS Q TODOS

Penso q deu pra entender + ou -

Digam-me como colocar esses criterios em prática no algoritmo, se é que entenderam!

Agradeço as respostas!

Share this post


Link to post
Share on other sites
KTachyon

É uma questão de ordem. Por exemplo, se ordenares as equipas com os critérios a partir da menor prioridade para a maior prioridade, consegues facilmente o que pretendes. Por exemplo, neste caso, ordenas primeiro pelo número de golos e depois pelo número de pontos.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
Jrthozy

Então eu faria

tg_  =Total de Golos da equipa ;

gm_  =Golos Marcados pela equipa  nos jogos;

Instruções equipa 1

tg_1=0;

tg_1=tg_1+gm_1; ( eh assim ? ) <-- quero saber como pôr pra somar o total! Tipo: se a equipa 1 marcou 3 golos, gm_1=3;

Logo,

tg_1=0+3;

tg_1=3;

        |

        |        em outro jogo, a mesma equipa 1 marca 2 golos: gm_1=2;

        |        Logo,                                                              |

        |        tg_1=tg_1+gm_1                                            |

        |-->    tg_1=3+2 <----------------------------------------|

                  tg_1=5;

Na classificação total do grupo A ficaria assim? :

Se tg_1>tg_4 e tg_4>tg_2 e tg_2>tg_3

      printf("    |Equipa  |  golos    | Pontos |

      printf("1º-|equipa 1 |    5        |    3    |

      printf("2º-|equipa 4 |    x        |    x    |

      printf("3º-|equipa 2 |    x        |    x    |

      printf("4º-|equipa 3 |    x        |    x    |

Digam-me com dispor os lugares na classificação, quem fica em 1º,2º,3º e 4º, como posso fazer isso? a situação acima esta errada?

Cumps!!

Share this post


Link to post
Share on other sites
KTachyon

Então eu faria

tg_  =Total de Golos da equipa ;

gm_  =Golos Marcados pela equipa  nos jogos;

Instruções equipa 1

tg_1=0;

tg_1=tg_1+gm_1; ( eh assim ? ) <-- quero saber como pôr pra somar o total! Tipo: se a equipa 1 marcou 3 golos, gm_1=3;

Logo,

tg_1=0+3;

tg_1=3;

        |

        |        em outro jogo, a mesma equipa 1 marca 2 golos: gm_1=2;

        |        Logo,                                                              |

        |        tg_1=tg_1+gm_1                                            |

        |-->    tg_1=3+2 <----------------------------------------|

                  tg_1=5;

Correcto, afirmativo. Claro que isso seria feito num ciclo.

Na classificação total do grupo A ficaria assim? :

Se tg_1>tg_4 e tg_4>tg_2 e tg_2>tg_3

      printf("    |Equipa  |  golos    | Pontos |

      printf("1º-|equipa 1 |    5        |    3    |

      printf("2º-|equipa 4 |    x        |    x    |

      printf("3º-|equipa 2 |    x        |    x    |

      printf("4º-|equipa 3 |    x        |    x    |

Digam-me com dispor os lugares na classificação, quem fica em 1º,2º,3º e 4º, como posso fazer isso? a situação acima esta errada?

Cumps!!

Se tiveres um array que representa a ordem, basta começares por fazer a comparação do número de golos marcados e ordenas o array dessa forma. Depois voltas a ordenar, desta vez por pontos. O que vais acontecer é que, a equipa com mais golos fica no mesmo sítio em caso de empate de pontos.

Agora, como fazer depende de como estruturas a informação em memória.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
Jrthozy

Estive a ver no Google e encontrei algo que pode me ajudar: Algoritmo de ordenação! Alguem pode me explicar como funciona e se for consideravel para o meu problema, expliquem-me como posso aplicá-lo!

Cumps.

Share this post


Link to post
Share on other sites
KTachyon

Qual deles? :D

Existem diversos algoritmos de ordenação, e sim, é normal que vás aplicar um deles. :P


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
Jrthozy

Encontrei esse codigo que ordena valores na net... mas quando um dos valores é '0' , ele mostra '2686756' em vez de 0... ajudem-me como resolver...

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int trocar(int y);
int valida(int x);
int valor[5],i,ordenador=1,Aux;

main()
{
 for (i=1; i <= 4; i++) 
 {
   printf("\n Escreva o %d Valor: ", i);
   scanf("%d", & valor[i]);
   valor[i] = valida(valor[i]);
 }
 for (i=1; i <= 4; i++) 
 {
   printf("\n--------\n%d\n--------\n", valor[i]);
 }
 printf("\n\n\n");
 valor[i] = trocar(valor[i]);
 for (i=1; i <= 4; i++) 
 {
   printf("\n--------\n%d\n--------\n", valor[i]);
 }
 fflush(stdin);
 getch();
}

/*----------------------- Função VALIDAR ----------------------------------------*/
int valida(int x)
{
 while (x)
 {
   if (x < -10 || x > 20)
   {
     printf("\n ERRO ! Valor Invalido ... Tente novamente\n\n");
     scanf("%d", & x);
   }
   else
   {
     return x;
     break;
   }
 }
}

/*----------------------- Função TROCAR ----------------------------------------*/
int trocar(int y)
{
 printf("\n Valores Lidos em ORDEM DECRESCENTE: \n\n\n");
 while (ordenador <= 4)
 {
   for (i=1; i <= 4; i++) 
   {
     if(valor[i] < valor[i+1])
     {
       Aux = valor[i];
       valor[i] = valor[i+1];
       valor[i+1] = Aux;
     }
   }
   ordenador++; 
 }
 fflush(stdin);
 getche();
}

Share this post


Link to post
Share on other sites
KTachyon

Alguns problemas:

1. Indica a linguagem no code (code=c).

2. Indenta o código

3. Deves utilizar int main(), a função main() não deve retornar void.

4. Na função valida() tens um return a meio da função. Deves colocar sempre o return no final da função.

5. A função troca() retorna um int, mas não estás a retornar nada. O que queres fazer no main para receber o vector não deves fazer assim.

6. Não precisas nem deves criar as variáveis globais que criaste. Deves criar no scope do main() e enviar o ponteiro para a função.

int troca(int *valores);

Se estiveres a usar GCC, utiliza a flag -Wall quando compilas. Verás logo uma série de warnings que deves sempre resolver.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
Localhost
4. Na função valida() tens um return a meio da função. Deves colocar sempre o return no final da função.

já li algumas vezes isto mas ainda não percebi o porquê.

por que é que não se pode fazer algo como isto:

bool find (int *list, int size, int key)
{
    for ( int i = 0; i < size; i++ )
       if ( list[i] == key )
          return true;

    return false;
}

esquece o facto de usar booleans e tal.


here since 2009

Share this post


Link to post
Share on other sites
KTachyon

É por uma boa prática para facilitar a manutenção.

Por exemplo (de entre muitos), em casos em que decides implementar uma nova funcionalidade em que passas a necessitar de alocar memória no início da função e tens que garantir que libertas a memória antes de sair da função, para evitar memory leaks.

Se tiveres uma função grande, cheia de returns pelo meio, para resolveres o problema ficas com código completamente ilegível.

Claro que existem casos em que o return deve ser utilizado no meio da função, em casos excepcionais. No caso do teu código podes poupar a atribuição de um valor a um register no código compilado, mas no caso do Jrthozy, o compilador irá gerar o mesmo código e a função deixa de ter warning.

PS: A título de curiosidade, o incumprimento desta regra custou-me um 20 num exame no meu primeiro ano de licenciatura, pelo que tenho um trauma derivado da situação :P


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

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

×
×
  • Create New...

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.