Ir ao conteúdo

C Meu programa em C não está listando em ordem crescente


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>

#define LINHAS 10                // Quantidade de linhas no arquivo

//void Quick(long int *vetor, int inicio, int fim);
 int numeros[10];
 int i, aux, contador;

int main() {
   
   char url[]="arquivo10.txt";      // Localização do Arquivo que estou lendo as informações
   FILE *arq;                           // Variáel que representa o arquivo
   
   clock_t tempo_inicio_carga;      // Armazena o tempo inicial da carga
   clock_t tempo_inicio_busca;      // Armazena o tempo inicial da busca   
   double tempo_em_segundos;        // Tempo de execução do programa
   
   long int i;
   long int inf[LINHAS];

   setlocale(LC_ALL, "Portuguese");  

// -----------------------------------------------------  
// Carga dos dados do arquivo no vetor inf
// -----------------------------------------------------

   tempo_inicio_carga = clock();  // Inicializa o tempo de carga do arquivo
   
   arq = fopen(url, "r");     // Comando de abertura do arquivo para LEITURA
   
   
   if(arq == NULL) {   // Verifica se foi possível encontrar / abrir o arquivo
      printf("Erro, não foi possível abrir o arquivo\n");
   }
   else {
      i = 0;
      while( (fscanf(arq,"%d \n", &inf[i]))!=EOF ) {   // Laço para a leitura das informações do arquivo
         i++; 
      }
   }
       
   fclose(arq);  // Fecha o arquivo
   
     
   
   tempo_em_segundos = (clock() - tempo_inicio_carga) / (double)CLOCKS_PER_SEC;  
   printf("Tempo de carga do arquivo em memória: %f\n", tempo_em_segundos);

   getch();   // aguarda o usu[ario digitar qualquer tecla para continuar



   tempo_inicio_busca = clock();  // Inicializa o tempo do algoritmo de ordenacao           
// -----------------------------------------------------
// SEU CÓDIGO AQUI - INICIO
// -----------------------------------------------------

for (contador = 1; contador < 10; contador++) {
   for (i = 0; i < 10 - 1; i++) {  
     if (numeros[i] < numeros[i + 1]) { // (<) decrescente (>) crescente
       aux = numeros[i];
       numeros[i] = numeros[i + 1];
       numeros[i + 1] = aux;
     }
   }
 }     

// -----------------------------------------------------
// SEU CÓDIGO AQUI - FINAL
// -----------------------------------------------------
   
   tempo_em_segundos = (clock() - tempo_inicio_busca) / (double)CLOCKS_PER_SEC;  
   printf("Tempo de execução: %f\n", tempo_em_segundos);
   
   
   getch();
   
   for (i = 0; i < LINHAS; i++) {   
      printf("%d \n", inf[i]);

   }            
   

   system("pause");
   return 0;
}

 

  • Obrigado 1
  • Solução
Postado

@patopaloro2001      seu metodo de ordenscao esta com erro ,  pois Quando i for igual a zero , entao  i-1 leva a uma posicao inexistente no vetor ,  e creio que se voce usar o metodo bubblesort seria melhor

int j , i, aux;

for(i=0 ; i<9; i++)

{

    for(j=i+1; j<10; j++)

    {

        if(numeros[i] < numeros[j])

        {

            aux              = numeros[i];

            numeros[i] = numeros[j];

            numeros[j] = aux;

        }

    }

}

  • Obrigado 1

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