Ir ao conteúdo

Posts recomendados

Postado

Fala rapaziada, estou com uma duvida enorme quem puder me ajudar hahah

Enunciado: Escrever um programa em C que leia os dados de cadastro de 50 triatletas conforme o formulário. Após
isso:
a) Exiba um relatório com os nomes dos triatletas que fizeram os melhores tempos nas etapas de
natação, corrida e ciclismo.
b) Exiba um relatório com o nome e patrocinador do melhor atleta.

 

Meu codigo.


1873602515_Semttulo.png.0752dd5408632652e556dffc8f4af07f.png

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define m 2
#define tam 100
struct data
{
    int dia;
    char mes[tam];
    int ano;
};
struct tempo
{
    int natacao;
    int corrida;
    int bike;
};
struct atleta
{
    char nome[tam];
    char patrocinador[tam];
    struct data nascimento;
    struct  tempo segundo;
};
int main()
{
    struct atleta triagem[tam];
    int i,iN,iB,iC;
    float menor_natacao=0,menor_corrida=0,menor_bike=0,melhor_atleta=0;
    printf("\t\t\tPREENCHIMENTO DOS ATLETAS\n\n");
    for(i=0;i<m;i++)
    {
        printf("Digite o nome do atleta: \n");
        scanf("\n%[^\n]",triagem.nome);
         printf("Digite o nome do patrocinador do atleta: \n");
        scanf("\n%[^\n]",triagem.patrocinador);
         printf("Digite o dia em que nasceu: \n");
        scanf("%i",&triagem.nascimento.dia);
         printf("Mes: \n");
        scanf("\n%[^\n]",triagem.nascimento.mes);
         printf("Ano: \n");
        scanf("%i",&triagem.nascimento.ano);
         printf("Digite o tempo feito na natacao: \n");
        scanf("%i",&triagem.segundo.natacao);
        printf("Digite o tempo feito na corrida: \n");
        scanf("%i",&triagem.segundo.corrida);
         printf("Digite o tempo feito na bike: \n");
        scanf("%i",&triagem.segundo.bike);
    }
    printf("\t\t\tRESULTADOS\n\n");
    for(i=0;i<m;i++)
    {
        if(triagem.segundo.natacao>menor_natacao)
        {
            menor_natacao=triagem.segundo.natacao;
            iN=i;
            iN++;
        }
        else if(triagem.segundo.corrida>menor_corrida)
        {
            menor_corrida=triagem.segundo.corrida;
            iB=i;
            iB++;
        }

        else  if(triagem.segundo.bike>menor_bike)
        {
            menor_bike=triagem.segundo.bike;
            iC=i;
            iC++;
        }
    }
    printf("O melhor atleta de natacao: %s\n\t",triagem[iN].nome);
    printf("||\tO melhor atleta de corrida: %s\t",triagem[iB].nome);
    printf("||\tO melhor atleta de bike: %s\t",triagem[iC].nome);

    return 0;
}

 

 

 

 

 

  • Curtir 1
Postado

@Flávio Pedroza esse é meu codigo consertado 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define m 2
#define tam 100
struct data
{
    int dia;
    char mes[tam];
    int ano;
};
struct tempo
{
    float natacao;
    float corrida;
    float bike;
};
struct atleta
{
    char nome[tam];
    char patrocinador[tam];
    struct data nascimento;
    struct  tempo segundo;
};
int main()
{
    struct atleta triagem[tam];
    int i,iN,iB,iC,totalmelhor=0;
    float menor_natacao=999999,menor_corrida=99999,menor_bike=999999,melhor_atleta=0;
    printf("\t\t\tPREENCHIMENTO DOS ATLETAS\n\n");
    for(i=0;i<m;i++)
    {
        printf("Digite o nome do atleta: \n");
        scanf("\n%[^\n]",triagem.nome);
         printf("Digite o nome do patrocinador do atleta: \n");
        scanf("\n%[^\n]",triagem.patrocinador);
         printf("Digite o dia em que nasceu: \n");
        scanf("%i",&triagem.nascimento.dia);
         printf("Mes: \n");
        scanf("\n%[^\n]",triagem.nascimento.mes);
         printf("Ano: \n");
        scanf("%i",&triagem.nascimento.ano);
         printf("Digite o tempo feito na natacao: \n");
        scanf("%f",&triagem.segundo.natacao);
        printf("Digite o tempo feito na corrida: \n");
        scanf("%f",&triagem.segundo.corrida);
         printf("Digite o tempo feito na bike: \n");
        scanf("%f",&triagem.segundo.bike);
    }
    printf("\t\t\tRESULTADOS\n\n");
    for(i=0;i<m;i++)
    {
        if(triagem.segundo.natacao<menor_natacao)
        {
            menor_natacao=triagem.segundo.natacao;
            iN=iN+i;
            iN++;
        }
    }
        printf("O melhor atleta de natacao: %s\n",triagem[iN].nome);
        for(i=0;i<m;i++)
        {
            if(triagem.segundo.corrida<menor_corrida)
            {
                menor_corrida=triagem.segundo.corrida;
                iC=iC+i;
                iC++;
            }
        }
        printf("O melhor atleta de corrida: %s\n",triagem[iC].nome);

        for(i=0;i<m;i++)
        {
            if(triagem.segundo.bike<menor_bike)
            {
                menor_bike=triagem.segundo.bike;
                iB=iB+i;
                iB++;
            }
        }
        printf("O melhor atleta de bike: %s",triagem[iB].nome);
        totalmelhor:iB+iC+iN;
        printf("O melhor atleta e %s com o cronometragem",triagem.nome,totalmelhor);
    return 0;
}
 

A minha duvida seria de como encontrar o melhor atleta.

  • Curtir 1
Postado

@Andrew Furtado     para preencher o vetor seria melhor usar um loop   do / while ,  e no enunciado não está pedindo a data de nascimento ,  apenas o nome do melhor na corrida e do melhor no ciclismo e o melhor na natação , e também o nome melhor atleta , que será o que tiver o menor tempo no total ,  e o nome do patrocinador desse melhor atleta ,  e seu código está bom ,  então com algumas modificações ele poderia ser assim  :

#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#define m 2
#define tam 100
int cont;
struct atleta{
    char nome[20];
    char patrocinador[20];
    int temp_natacao;
    int temp_corrida;
    int temp_ciclismo;
    int tempo;
}triagem[tam];
int main(){
    char opc;
    int j,p_co,p_ci,p_na,melhor_em_corrida;
    int melhor_em_ciclismo,melhor_em_natacao;
    int temp_natacao,temp_ciclismo,temp_corrida,o_melhor=0;
    do{
        printf("Digite o nome do atleta : ");
        scanf("\n%[^\n]",triagem[cont].nome);

        printf("Digite o nome do patrocinador do atleta: ");
        scanf("\n%[^\n]",triagem[cont].patrocinador);

        printf("Digite o tempo feito na natacao : ");
        scanf("%d",&triagem[cont].temp_natacao);

        printf("Digite o tempo feito na corrida : ");
        scanf("%d",&triagem[cont].temp_corrida);

        printf("Digite o tempo feito na bike : ");
        scanf("%d",&triagem[cont].temp_ciclismo);

        cont++;

        printf("outro atleta S/N ");
        opc = (char)getch();
        printf("\n\n");
    }while(toupper(opc) != 'N');
    for(j=0;j<cont;j++){
        if(j==0){
            melhor_em_natacao  = triagem[j].temp_natacao ;
            melhor_em_corrida  = triagem[j].temp_corrida ;
            melhor_em_ciclismo = triagem[j].temp_ciclismo;
            p_na = j;
            p_co = j;
            p_ci = j;
        }
        else{
            if(melhor_em_natacao  > triagem[j].temp_natacao){
                melhor_em_natacao = triagem[j].temp_natacao ;
                p_na = j;
            }
            if(melhor_em_corrida  > triagem[j].temp_corrida){
                melhor_em_corrida = triagem[j].temp_corrida ;
                p_co = j;
            }
            if(melhor_em_ciclismo  > triagem[j].temp_ciclismo){
                melhor_em_ciclismo = triagem[j].temp_ciclismo ;
                p_ci = j;
            }
        }
        triagem[j].tempo            = /* a soma dos tempos */
            triagem[j].temp_natacao +
            triagem[j].temp_corrida +
            triagem[j].temp_ciclismo;

        if(j > 0)
            if(triagem[j-1].tempo >= triagem[j].tempo)/* o melhor é quem tem o menor tempo */
                o_melhor=j;
    }

    printf("o melhor na natacao  eh -> %s\n"  ,triagem[p_na].nome            );
    printf("o melhor na corrida  eh -> %s\n"  ,triagem[p_co].nome            );
    printf("o melhor no ciclismo eh -> %s\n\n",triagem[p_ci].nome            );
    printf("o melhor   Atleta    eh -> %s\n"  ,triagem[o_melhor].nome        );
    printf("Cujo   Patrocinador  eh -> %s\n"  ,triagem[o_melhor].patrocinador);

    printf("\n        Tecle !\n\n\n");
    getch();
    return 0;
}

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!