Ir ao conteúdo
  • Cadastre-se

C Preciso ordenar os nomes e os tempos pela ordem de chegada, pra colocar no case3


Leticia da Silva

Posts recomendados

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

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

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

 

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!