Ir ao conteúdo
  • Cadastre-se
pedroreisto100

Variação no tamanho de vetor

Recommended Posts

Estou fazendo um programa que ordena vetores utilizando o método bolha:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main()

{

//METODO BOLHA

srand(time(0) );

int x, y, aux, troca, com;

int vetor[1000];

vetor[x]=aux;

x=0;

y=0;

aux=0;

troca=0;

clock_t inicio1=clock()/(CLOCKS_PER_SEC/1000);

for(x=0;x<1000;x++){

for(y=x+1;y<1000;y++)

//ou seja, compara com o número que está a frente

{

com=com+1;

if(vetor[x]>vetor[y])

{aux=vetor[x];

vetor[x]=vetor[y];

vetor[y]=aux;

troca=troca+3;}}}

//Se o numero de tras for maior que o da frente, são realizadas 3 trocas, e a ordenação é feita

printf("Elementos ordenados: ");

for(x=0;x<1000;x++){

printf(" vetor[%d] = %d\n", x, vetor[x]);

}

printf("Total de comparações: %d \nTotal de trocas: %d\n", com, troca);

clock_t fim1=clock()/(CLOCKS_PER_SEC/1000);

printf("Tempo total: %d",(fim1-inicio1));

return 0;

}

Tudo roda tranquilamente. O problema é que eu preciso mudar esse vetor de tamanho 1000 torando-o variavel. Já criei um vetor grande e tentei utilizar a variavel dentro das estruturas de repetição (no lugar do 1000). porém aparece a mensagem core dumped e num faço mais ideia do que preciso fazer pra solucionar isso. Se alguem puder dar uma maozinha eu agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for para modificar o tamanho no código fonte faça uma Constante.

inclua logo depois do cabeçalho

#define TAM_MAX 1000

e ao invés de 1000 coloque TAM_MAX no decorrer do programa

a diretiva #define é uma instrução de pré processamento ou seja sempre que o compilador achar TAM_MAX ele modificará pelo valor dado a ele, isso facilita pois você só precisa trocar o valor uma vez só por exemplo:

#define TAM_MAX 50 //fará a troca de todos os TAM_MAX do programa

Mas se o tamanho do valor é determinado pelo usuário,você vai precisar de usar alocação de memória dinamica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas porque se eu fizer assim, não da certo?

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main()

{

//METODO BOLHA

srand(time(0) );

int a, x, y, aux, troca, com;

int vetor[100000];

printf("Tamanho do vetor");

scanf("%d",a);

vetor[x]=aux;

x=0;

y=0;

aux=0;

troca=0;

clock_t inicio1=clock()/(CLOCKS_PER_SEC/1000);

for(x=0;x<a;x++){

for(y=x+1;y<a;y++)

//ou seja, compara com o número que está a frente

{

com=com+1;

if(vetor[x]>vetor[y])

{aux=vetor[x];

vetor[x]=vetor[y];

vetor[y]=aux;

troca=troca+3;}}}

//Se o numero de tras for maior que o da frente, são realizadas 3 trocas, e a ordenação é feita

printf("Elementos ordenados: ");

for(x=0;x<a;x++){

printf(" vetor[%d] = %d\n", x, vetor[x]);

}

printf("Total de comparações: %d \nTotal de trocas: %d\n", com, troca);

clock_t fim1=clock()/(CLOCKS_PER_SEC/1000);

printf("Tempo total: %d",(fim1-inicio1));

return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei um erro na linha 14:

scanf("%d",a); // seria scanf("%d", &a);

e na linha 44:

printf("Tempo total: %d", (fim1-inicio1)); //seria long int então troque %d por %ld

mas você não inciou seu vetor... está tudo zerado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×