Ir ao conteúdo
  • Cadastre-se

C <Programinha em STRUCT galera>


Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

@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;
}

 

Link para o comentário
Compartilhar em outros sites

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!