Jump to content

Implementar menu de estatísticas


Sofia Gonçalves

Recommended Posts

Boa tarde!

Desde já obrigada! Agradeço toda a ajuda que me possam dar!

Tenho vindo a realizar um trabalho em linguagem C. A verdade é que eu sou iniciante em relação a programar e portanto não sei como continuar este trabalho.

O trabalho é sobre uma corrida de cavalos. Existe um menu principal e submenus. A ideia é conseguir inserir, eliminar, consultar e listar informação. No entanto, só posso usar ciclos, vetores, strings, matrizes, estruturas, apontadores, funções e procedimentos.

Não estou a conseguir começar o Menu Estatisticas pois não sei como fazer.

Enunciado do trabalho:

Citação

"Uma Associação de Amigos Criadores de Cavalos de Corrida (A2C3) pretende realizar um campeonato de corridas de cavalos, envolvendo várias quadras, como forma de promover os seus cavalos e serviços. Cada quadra é formada por vários cavalos e respetivos jockeys. Este campeonato pretende eleger o melhor cavalo e a melhor quadra e para a sua realização serão utilizadas várias pistas a nível nacional.  Para efetuar a gestão de toda esta informação, será necessário armazenar informação sobre as quadras (máximo 100), sobre os cavalos e seus jockeys (máximo 100) e sobre as diversas jornadas que compõem o campeonato. Em cada jornada podem ser efetuadas no máximo 3 provas.  O campeonato é composto por um máximo de 15 jornadas, que decorrem ao longo de um ano. Em cada jornada podem participar no máximo 10 cavalos. O cavalo vencedor do campeonato será aquele que venceu o maior número de jornadas. A quadra vencedora será aquela que tem o maior número de vitórias obtidas ao longo do campeonato (o total de vitórias de uma quadra corresponde ao número de jornadas ganhas pelos vários cavalos dessa quadra).  

MENU ESTATÍSTICAS 
 
1 - Resultados do Campeonato  

2 - Percentagem de vitórias por Participante

3 - Media de Tempos  

4 - Quadra com mais Participantes no Campeonato  

0 - Voltar ao Menu Principal  
 
Selecionar opção: _

  • Na opção Resultados do campeonato deve apresentar a informação dos Cavalos vencedores (do primeiro ao terceiro lugar) e a informação da Quadra vencedora;  
  • Na opção Percentagem de vitórias por Participante, apresente a percentagem de vitórias por participante;
  • Na opção Média de Tempos, apresente a média de tempos por cada jornada, bem como a média de tempo do campeonato;  
  • Na opção Quadra com mais Participantes no Campeonato deve indicar qual a quadra que teve mais participantes a participar no campeonato. "

Isto foi o q já fiz:

1) Menus

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

void MenuGestaoDeParticipantes();
void MenuGestaoDeQuadras();
void MenuGestaoDeJornadas();
void MenuEstatisticas();

void MenuPrincipal()
{
    char op;
    do
    {
        do
        {
            system ("cls");
            printf("MENU PRINCIPAL\n\n");
            printf("1 - Gestao de Quadras  \n");
            printf("2 - Gestao de Participantes\n");
            printf("3 - Gestao de Jornadas\n");
            printf("4 - Estatisticas\n");
            printf("0 - Sair\n");
            printf("Selecionar opcao: \n\n");
            op=getchar();
        }while(op!='1' && op!='2' && op!='3' && op!='4' && op!='0');

        switch (op)
        {
            case '1':MenuGestaoDeQuadras();
                     break;
            case '2':MenuGestaoDeParticipantes();
                     break;
            case '3':MenuGestaoDeJornadas();
                     break;
            case '4':MenuEstatisticas();
                     break;
            case '0':exit(0);
                     break;
        }
    }while(op!='0');

    system("PAUSE");

}

void MenuGestaoDeQuadras()
{
    char op1;
        do
        {
            system ("cls");
            printf("MENU GESTAO DE QUADRAS \n\n");
            printf("1 - Inserir Quadra\n");
            printf("2 - Eliminar Quadra\n");
            printf("3 - Consultar Quadra por nome\n");
            printf("4 - Consultar Quadra com mais cavalos \n");
            printf("5 - Listar Todas as Quadras\n");
            printf("0 - Voltar ao Menu Principal\n\n");
            printf("Selecionar opcao: \n");
            op1=getchar();
            break;
        }while(op1!=0);

    system("PAUSE");

}

void MenuGestaoDeParticipantes()
{
    char op2;
        do
        {
            system ("cls");
            printf("MENU GESTAO DE PARTCIPANTES \n\n");
            printf("1 - Inserir participante\n");
            printf("2 - Eliminar participante\n");
            printf("3 - Consultar participante por NC do jockey\n");
            printf("4 - Consultar participante cujo cavalo seja a femea mais idosa\n");
            printf("5 - Listar todos os participantes\n");
            printf("0 - Voltar ao Menu Principal\n\n");
            printf("Selecionar opcao: \n");
            op2=getchar();
            break;
        }while(op2!=0);

    system("PAUSE");

}

void MenuGestaoDeJornadas()
{
    char op3;
        do
        {
            system ("cls");
            printf("MENU GESTAO DE JORNADAS\n\n");
            printf("1 - Inserir jornada\n");
            printf("2 - Consultar resultados da jornada por data\n");
            printf("3 - Consultar jornadas por nome do cavalo\n");
            printf("4 - Listar todas as jornadas\n");
            printf("0 - Voltar ao Menu Principal\n");
            printf("Selecionar opcao:\n\n");
            op3=getchar();
            break;
        }while(op3!=0);

    system("PAUSE");
}

void MenuEstatisticas()
{
    char op4;
        do
        {
            system ("cls");
            printf("MENU ESTATISTICAS\n\n");
            printf("1 - Resultados do campeonato\n");
            printf("2 - Percentagem de vitorias por participante\n");
            printf("3 - Media de tempos\n");
            printf("4 - Quadra com mais participantes no campeonato\n");
            printf("0 - Voltar ao Menu Principal\n");
            printf("Selecionar opcao:\n\n");
            op4=getchar();
            break;
        }while(op4!=0);

    system("PAUSE");
    ;
}


int main()
{
    MenuPrincipal();
}

2)Menu Gestao de Quadras

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

typedef struct Quadra
{
    int cod;
    int vazio;
    char NomeDaQuadra[100];
    char Localidade[10];
    int QuantidadeCavalos;
}QUADRA;

QUADRA vetor_quadras [100];
int  vIndiceGlobal;


void InserirQuadra()
{
    system("cls");
    printf("\n\nInserindo uma nova quadra...\n\n");
    QUADRA  vQ;
    printf ("Digite o nome da quadra: ");
    fflush(stdin);
    gets (vQ.NomeDaQuadra);
    printf ("Digite a localidade: ");
    gets (vQ.Localidade);
    printf("Digite a quantidade de cavalos: ");
    scanf ("%d", &vQ.QuantidadeCavalos);

    vetor_quadras [vIndiceGlobal]=vQ;
    vIndiceGlobal++;
    printf("\n\nQuadra inserida com sucesso!\n\n");
}

void EliminarQuadra()
{
    int cod, cont=0;
    char resp;

    system("cls");

    printf("\nQual o nome da quadra que deseja eliminar?\n");
    scanf("%d", &cod);

    while (cont<=100)
    {
        if (vetor_quadras[cont].cod == cod)
        {
            if (vetor_quadras[cont].vazio == 1)
            {
                printf("\nNome da quadra: %s", vetor_quadras[cont].NomeDaQuadra);
                printf("\nLocalidade: %s", vetor_quadras[cont].Localidade);
                printf("\nQuantidade de cavalos: %d", vetor_quadras[cont].QuantidadeCavalos);
                getchar();

                printf("\nDeseja realmente eliminar? S/N ");
                scanf("%c", &resp);

                if ((resp == 'S') || (resp == 's'))
                {
                    vetor_quadras[cont].vazio=0;
                    printf ("\nA quadra foi eliminada com sucesso\n");
                    break;
                }
                else
                {
                    if ((resp == 'N') || (resp == 'n'))
                    {
                        vetor_quadras[cont].vazio=0;
                        printf ("\nQuadra nao eliminada\n");
                        break;
                    }

                }
            }
        }
        cont++;

        if(cont>100)
            printf("\nQuadra nao encontrada!\n");
    }
}

void ConsultarPorNome()
{
    char consultar[100];
    int i;

    system("cls");
    printf("\n\nConsultar por nome da quadra\n\n");
    printf("Digite o nome da quadra que deseja consultar: ");
    fflush(stdin);
    gets(consultar);
    for (i=0; i<vIndiceGlobal; i++)
        {
            if(strcasecmp(consultar, vetor_quadras[i].NomeDaQuadra) == 0)
            {
                printf("%d] Nome da Quadra: %s | Localidade: %s | Quantidade de cavalos: %d\n", i,vetor_quadras[i].NomeDaQuadra, vetor_quadras[i].Localidade, vetor_quadras[i].QuantidadeCavalos);
            }
        }
        puts("\n\n");
}

void ListarTodasQuadras()
{
    int i;

    printf("\n\nLista de todas as quadras\n\n");
    for (i=0; i<vIndiceGlobal; i++)
    {
        printf("%d] Nome da Quadra: %s | Localidade: %s | Quantidade de cavalos: %d\n", i,vetor_quadras[i].NomeDaQuadra, vetor_quadras[i].Localidade, vetor_quadras[i].QuantidadeCavalos);
    }
    puts("\n\n");
}

void MenuGestaoDeQuadras()
{
    vIndiceGlobal=0;
    char op1;
    do
    {
        do
        {
            system ("cls");
            printf("MENU GESTAO DE QUADRAS \n\n");
            printf("1 - Inserir Quadra\n");
            printf("2 - Eliminar Quadra\n");
            printf("3 - Consultar Quadra por nome\n");
            printf("4 - Consultar Quadra com mais cavalos \n");
            printf("5 - Listar Todas as Quadras\n");
            printf("0 - Voltar ao Menu Principal\n\n");
            printf("Selecionar opcao:\n");
            op1=getchar();
            break;
        }while(op1!='1' && op1!='2' && op1!='3' && op1!='4' && op1!='5' && op1!='0');

        switch (op1)
        {
            case '1':
                    InserirQuadra();
                    system("PAUSE");
                    break;
            case '2':
                    EliminarQuadra();
                    system ("PAUSE");
                    break;
            case '3':
                    ConsultarPorNome();
                    system("PAUSE");
                    break;
            case '4':
                      break;
            case '5':
                    ListarTodasQuadras();
                    system("PAUSE");
                    break;
            case '0':
                   /* exit(0);*/
                    break;
            default:
                printf("\n\n Opcao Invalida!\n Tente novamente");
                break;
        }
    }while(op1!='0');

}

int main()
{
    MenuGestaoDeQuadras();
}

3)Menu Gestao de Participantes

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

typedef struct Participante
{
    char NomeDoCavalo[100];
    char SexoDoCavalo;
    int IdadeDoCavalo;
    int NCjockey;

}PARTICIPANTE;

PARTICIPANTE  vetor_participantes [100];
int vIndiceGlobal1;


void InserirParticipante()
{
    system("cls");
    printf("\n\nInserindo um novo participante...\n\n");
    PARTICIPANTE vQ1;
    printf ("Digite o nome do cavalo: ");
    fflush(stdin);
    gets (vQ1.NomeDoCavalo);
    printf ("Digite o sexo do cavalo:\n M- masculino\n F- feminino\n ");
    scanf("%c", &vQ1.SexoDoCavalo);
    printf("Digite a idade do cavalo: ");
    scanf ("%d", &vQ1.IdadeDoCavalo);
    printf("Digite o numero de contribuinte do jockey: ");
    scanf ("%d", &vQ1.NCjockey);

    vetor_participantes [vIndiceGlobal1]=vQ1;
    vIndiceGlobal1++;
    printf("\n\nParticipante inserido com sucesso!\n\n");
}

void ConsultarPorNCjockey()
{
    char consult[100];
    int i;

    printf("\n\nConsultar por numero de contribuinte do jockey\n\n");
    printf("Digite o numero de contribuinte do jockey que deseja consultar: ");
    fflush(stdin);
    gets(consult);
    for (i=0; i<vIndiceGlobal1; i++)
        {
            if(strcasecmp(consult, vetor_participantes[i].NCjockey) == 0)
            {
                printf("%d] Nome do cavalo: %s | Sexo do cavalo: %c | Idade do cavalo: %d | Numero de contribuinte do jockey: %d \n", i,vetor_participantes[i].NomeDoCavalo, vetor_participantes[i].SexoDoCavalo, vetor_participantes[i].IdadeDoCavalo, vetor_participantes.NCjockey);
            }
        }
        puts("\n\n");
}

void ListarTodosParticipantes()
{
    int i;

    printf("\n\nLista de todos os participantes\n\n");
    for (i=0; i<vIndiceGlobal1; i++)
    {
        printf("%d] Nome do cavalo: %s | Sexo do cavalo: %c | Idade do cavalo: %d | Numero de contribuinte: %d", i, vetor_participantes[i].NomeDoCavalo, vetor_participantes[i].SexoDoCavalo, vetor_participantes[i].IdadeDoCavalo, vetor_participantes.NCjockey);
    }
    puts("\n\n");
}

void MenuGestaoDeParticipantes()
{
    vIndiceGlobal1=0;
    char op2;
    do
    {
        do
        {
            system ("cls");
            printf("MENU GESTAO DE PARTCIPANTES \n\n");
            printf("1 - Inserir participante\n");
            printf("2 - Eliminar participante\n");
            printf("3 - Consultar participante por NC do jockey\n");
            printf("4 - Consultar participante cujo cavalo seja a femea mais idosa\n");
            printf("5 - Listar todos os participantes\n");
            printf("0 - Voltar ao Menu Principal\n\n");
            printf("Selecionar opcao:_\n");
            op2=getchar();
            break;
        }while(op2!='1' && op2!='2' && op2!='3' && op2!='4' && op2!='5' && op2!='0');

        switch (op2)
        {
            case '1':
                    InserirParticipante();
                    system("PAUSE");
                    break;
            case '2':

            case '3':
                    ConsultarPorNCjockey();
                    system("PAUSE");
                    break;
            case '4':
                    break;
            case '5':
                    ListarTodosParticipantes();
                    system("PAUSE");
                    break;
            case '0':
                   /* MenuPrincipal(); */
                   break;
        }
    }while(op2!='0');

}

int main()
{
    MenuGestaoDeParticipantes();
}  
Link to comment
Share on other sites

Olá! O que me falta fazer é mesmo o menu das estatisticas mas não faço ideia como o começar. Como nos outros menus era quase tudo igual ( inserir, eliminar, consultar, listar..) eu fui fazendo tudo no mesmo esquema mas agora como este é diferente nao faço ideia de como o fazer. Por exemplo na opção "quadra com mais participantes no campeonato", supostamente tenho de relacionar a parte do menu das quadras com isto certo? Mas não faço ideia como

Link to comment
Share on other sites

1 hour ago, Sofia Gonçalves said:

Pois agora que vejo se calhar não relacionei.

Mas como devo proceder para o fazer?

pois .. se tivesses, a tua questão original do tópico estaria resolvidam isto porque bastaria ir a todas as quadras e verificar quel é que tem mais cavalos

como fazer-lo ? existem muitas maneiras. sabes o que é uma lista ligada ?

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

#define MAX_CAVALOS_POR_QUADRA 64

typedef struct Quadra
{
    int cod;
    int vazio;
    char NomeDaQuadra[100];
    char Localidade[10];
  	PARTICIPANTE Cavalos[MAX_CAVALOS_POR_QUADRA;  // registos de cavalos da quadra
    int QuantidadeCavalos; 						  // numero de registos no array anterior
}QUADRA;

depois disso, basta percorrer a lista de quadras e verificar ual deles é que tem a maior quantidade de cavalos registados

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
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.