Ir ao conteúdo

Posts recomendados

Postado

include <stdio.h>
#include <stdlib.h>
#define NUMERO_DE_CORREDORES 5
#define TAMANHO_MAXIMO_DO_NOME 500

float informacao(char nome[][TAMANHO_MAXIMO_DO_NOME], double tempo[NUMERO_DE_CORREDORES]){
    int i;


    for(i=0;i<5;i++){
    printf("\n %s == %.2f", nome[i], tempo[i]);

    }

}

void cadastro(char nome[][TAMANHO_MAXIMO_DO_NOME],double tempo[NUMERO_DE_CORREDORES])
{

  int i;
  int maior;
  double total;

  for(i=0;i<NUMERO_DE_CORREDORES;i++)
  {
    fflush(stdin);

    printf("\nInforme o nome do corredor %d: ", i+1);
    fgets(nome[i], TAMANHO_MAXIMO_DO_NOME,stdin);

    printf("Insira o tempo de %s: ", nome[i]);
    scanf("%lf", &tempo[i]);
  }


}


int main()
{

    int  opcao;
    char nome[NUMERO_DE_CORREDORES][TAMANHO_MAXIMO_DO_NOME];
    double tempo[NUMERO_DE_CORREDORES];

    float numeros[5];
    printf("Escolha a opcao abaixo\n");

    do{
    printf(" \n1-Cadastro de Corredores \n 2-informações \n 3-Classificacao Geral\n 4-Gravar Arquivo\n 5-Ler Arquivo\n 6-Sair\n");
    scanf("%d",&opcao);

    switch(opcao)
    {
        case 1:
        cadastro(nome,tempo);
        break;

        case 2:
        informacao(nome, tempo);
        break;


        }
    }
    while(opcao!=6);
}

  • Obrigado 1
Postado
17 minutos atrás, Leticia da Silva disse:

float informacao(char nome[][TAMANHO_MAXIMO_DO_NOME], double tempo[NUMERO_DE_CORREDORES])

 

E onde está um return na função com seja lá o que pretende retornar?

 

Use o botão code como explicado no primeiro post do forum... Veja a diferença:

 

include <stdio.h>
#include <stdlib.h>
#define NUMERO_DE_CORREDORES 5
#define TAMANHO_MAXIMO_DO_NOME 500

float informacao(char nome[][TAMANHO_MAXIMO_DO_NOME], double tempo[NUMERO_DE_CORREDORES]){
    int i;


    for(i=0;i<5;i++){
    printf("\n %s == %.2f", nome[i], tempo[i]);

    }

}

void cadastro(char nome[][TAMANHO_MAXIMO_DO_NOME],double tempo[NUMERO_DE_CORREDORES])
{

  int i;
  int maior;
  double total;

  for(i=0;i<NUMERO_DE_CORREDORES;i++)
  {
    fflush(stdin);

    printf("\nInforme o nome do corredor %d: ", i+1);
    fgets(nome[i], TAMANHO_MAXIMO_DO_NOME,stdin);

    printf("Insira o tempo de %s: ", nome[i]);
    scanf("%lf", &tempo[i]);
  }


}


int main()
{

    int  opcao;
    char nome[NUMERO_DE_CORREDORES][TAMANHO_MAXIMO_DO_NOME];
    double tempo[NUMERO_DE_CORREDORES];

    float numeros[5];
    printf("Escolha a opcao abaixo\n");

    do{
    printf(" \n1-Cadastro de Corredores \n 2-informações \n 3-Classificacao Geral\n 4-Gravar Arquivo\n 5-Ler Arquivo\n 6-Sair\n");
    scanf("%d",&opcao);

    switch(opcao)
    {
        case 1:
        cadastro(nome,tempo);
        break;

        case 2:
        informacao(nome, tempo);
        break;


        }
    }
    while(opcao!=6);
}

 

  • Curtir 2
Postado

@Leticia da Silva     existe vários métodos de ordenação  de vetores  ,   e os mais conhecidos   pode ser o bubbleSortselectionSort ,  e outros  . . . !  ,  mas esses  tem um conceito mais apurado e mais difícil de fazer e entender e demora mais tempo para fazer a organização ,   e tem esse   ,  ancoraSort ,  que considero bem simples e fácil e rápido , pois na primeira passada ele já  decide o menor ou o maior número que existe no vetor  , dependendo da necessidade ,    e nesse seu código , você cadastra o nome e o tempo  , e o tempo é o tempo gasto por cada um dos competidores , e quanto menor o tempo , mais em primeiro chegou ,   assim a ordenação  pode classificar dos que chegaram em primeiro para os que chegaram por último ,  e assim , depois da ordenação  o primeiro  é o vencedor :

e  nesse vídeo pode se ver como é o funcionamento dos vários métodos:

cada passada da barra vermelha representa uma volta no loop mais interno , e as barras brancas são os números , que vão sendo organizados do menor para o maior .

representação Gráfica dos métodos de ordenação :

 

https://www.youtube.com/watch?v=rQTQF46o16k

 

https://www.youtube.com/watch?v=kPRA0W1kECg&t=75s

 

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#define NUMERO_DE_CORREDORES 5
#define TAMANHO_MAXIMO_DO_NOME 500
#define _h GetStdHandle(STD_OUTPUT_HANDLE)

int ordenacao  ( char nome[][500] , float* tempo );
char gravar_arq( char nome[][500] , float* tempo );
char ler_arq   ( char nome[][500] , float* tempo );

float informacao(char nome[][TAMANHO_MAXIMO_DO_NOME], float tempo[NUMERO_DE_CORREDORES])
{
  int i;
  SetConsoleTextAttribute( _h , 12 + ( 10 << 4 ) );
  printf("     Nome       Tempo   \n");
  for( int i=0; i<5; i++ )  /// alguns compiladores / IDE's aceitam criar a variAvel dntro do Loop
    printf("\n %8s == %8.2f   ", nome[i], tempo[i]);
}
void cadastro( char nome[][ TAMANHO_MAXIMO_DO_NOME ] , 
              double tempo[ NUMERO_DE_CORREDORES   ] )
{
  int i        = 0;
  int maior    = 0;
  double total = 0;
  for( int i=0; i<NUMERO_DE_CORREDORES; i++ )
  {
    fflush(stdin);
    printf("\nInforme o nome do corredor %d: ", i+1);
    fgets(nome[i], TAMANHO_MAXIMO_DO_NOME,stdin);
    printf("Insira o tempo de %s: ", nome[i]);
    scanf("%lf", &tempo[i]);
  }
}
int main()
{
  int cor_letra , cor_fundo;
  CONSOLE_SCREEN_BUFFER_INFO c;
  if( GetConsoleScreenBufferInfo( _h , & c ) )
  {
    cor_letra = ( c.wAttributes & 0xFF )        & 0x0F;
    cor_fundo = ((c.wAttributes & 0xFF ) >> 4 ) & 0x0F;
  }
  int    opcao;
  char   nome [ NUMERO_DE_CORREDORES ][ TAMANHO_MAXIMO_DO_NOME ] = 
  {
    "kiko" ,"lolipop" ,"juju" ,"kolip" ,"lopol"
  };
  float tempo[ NUMERO_DE_CORREDORES ] = 
  {
    2.21 , 0.98 , 1.83 , 1.26 , 2.02  
  };

  float numeros[] = { 0.0 };
  do
  {
    SetConsoleTextAttribute( _h , 11 + ( 0 << 4 ) );
    printf("\n=======================\n\n"
           " 1 - Cadastro de Corredores\n"
           " 2 - informações           \n"
           " 3 - ClassificaCAo Geral   \n"
           " 4 - Gravar Arquivo        \n"
           " 5 - Ler Arquivo           \n"
           " 6 - Sair                  \n"
           "     Escolha Uma opcao  "   );
    scanf( "%d" , & opcao               );
    printf("\n\n");
    SetConsoleTextAttribute( _h , 7 + ( 0 << 4 ) );
    switch( opcao )
    {
    case 1:
      cadastro(nome,tempo);
      break;
    case 2:
      informacao(nome, tempo);
      break;
    case 3:
      ordenacao(nome, tempo);
      break;
      case 4:
      gravar_arq(nome,tempo);
      break;
    case 5:
      ler_arq(nome, tempo);
      break;
    case 6:
      printf("\n\n\tSainDo Do Programa . . . !");
      break;
    default:
      printf("\nOpCAo InvaLida . . . !\n");
    }
  }  while( opcao != 6 );
  printf("\n\n\n");
  return 0;
}
int ordenacao( char nome[][500] , float* tempo )
{
  char ax[500];
  printf("OrdenaCAo dos competidores por tempo\n" );
  for(   int i=0;   i<NUMERO_DE_CORREDORES; i++ )
  {
    for( int j=i+1; j<NUMERO_DE_CORREDORES; j++ )
    {
      if( tempo[i] > tempo[j] )
      {
        float aux       =  tempo[i];
        tempo[i]        =  tempo[j];
        tempo[j]        =       aux;
        strcpy( ax      , nome[i] );
        strcpy( nome[i] , nome[j] );
        strcpy( nome[j] ,      ax );
      }
    }
  }
  return 0;
}
char gravar_arq( char nome[][500] , float* tempo )
{
  return NULL;
}
char ler_arq   ( char nome[][500] , float* tempo )
{
  return NULL;
}

 

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