Ir ao conteúdo
  • Cadastre-se
lucasgarcia

Dúvida exercicio VETOR em C

Recommended Posts

Olá pessoal estou com duvida em como fazer esse exercicio em C:

/*Usando vetores dinâmicos, faça um programa que leia um vetor de número inteiros e organize o vetor,

sendo os números impares para a direita e os pares para a esquerda. (1 ponto).*/

eu ate ja comecei,mas nao faço a minima ideia de como organizar o vetor dessa forma,se alguem puder me ajudar eu agradeço,meu codigo ate agora:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{ int* vetor;
int i,num,par=0;



printf("informe o numero de elementos\n");
scanf("%d",&num);
//informando dinamicamente o vetor
vetor=(int*) malloc(num*sizeof(int));
//atribuindo valores ao vetor
for(i=0;i<num;i++){
printf("digite os valores do vetor:\n");
scanf("%d",&vetor[i]);
if(vetor[i]%2==0)
par++;

}

free(vetor);









system("PAUSE");
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode fazer uma gambiarra, do tipo, criar 2 vetores de auxilio tipo [vetor_par] e [vetor_impar]

e toda hora que der um resultado IMPAR/PAR, alocar o valor em um vetor respectivo,

e depois de dividir isto,

você pode limpar o vetor principal e logo após,

alocar as informações dos vetores impar e par no vetor principal

ou seja, 2 for. Um para o PAR e outro para o IMPAR

ou seja


for (int i = 0; i < tamanho_vetorPrincipal/2; i ++) /2 pois é metade do vetor
vetorprincipal_na_posição_i recebe o vetor_par_na_posição_i;

e para o IMPAR é semelhante, porém o for inicia logo após o último inserido

ficaria +- assim


Y = 0;
for(int i = tamanho_do_vetor/2 ; i < tamanho_do_vetor;i++)

vetorprincipal_na_posição_i recebe o vetor_par_na_posição_Y;
Y++;

porque Y?

pois seu vetor está no inicio os valores dos números impares e seu for está começando na metade, assim, ele precisa começar no começo do vetor dos impares

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo vizualizei as suas dicas,e fiz um novo codigo,só que nao esta dando certo na hora de imprimir,e eu tambem nao entendi muito bem a funcao desse y,eu criei os vetores impar e par como dinamicos,nao sei se era pra fazer exatamente isso,segue o meu novo codigo depois das suas dicas:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{ int* vetor;
int i,num,y=0;
int* vetorpar;
int* vetorimpar;


printf("informe o numero de elementos\n");
scanf("%d",&num);
//informando dinamicamente o vetor
vetor=(int*) malloc(num*sizeof(int));
vetorpar=(int*) malloc(num*sizeof(int));
vetorimpar=(int*) malloc(num*sizeof(int));
//atribuindo valores ao vetor
for(i=0;i<num/2;i++){
printf("digite os valores do vetor:\n");
scanf("%d",&vetor[i]);
if(vetor[i]%2==0)
vetor[i]=vetorpar[i];

}

for(i=num/2;i<num;i++){
printf("digite os valores do vetor:\n");
scanf("%d",&vetor[i]);
if(vetor[i]%2!=0)
vetor[i]=vetorpar[y];
y++;
}

for(i=0;i<num;i++){
printf("vetor organizado:%d\n",vetor[i]);
}







free(vetor);
free(vetorpar);
free(vetorimpar);








system("PAUSE");
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja no seu scan para pegar os valores do vetor, você dividiu o vetor ao meio, você tem antes disso que preencher então não precisa o "num/2", e tem muita coisa que você ainda não fez, como por exemplo colocar os impares...

pra preencher você precisa ir até o num


int i = 0;i<num;i++

e enquanto vai preenchendo, você faz o teste com o numero,

se for par, vai pro vetor par e acrescenta o índice local do vetor par, se não faz o mesmo porém no vetor impar

fica +- assim


scanf...
if valor % 2 der zero
vetor_par[indice_par] = vetor[i]
indice_par ++
se nao
vetor_impar[indice_impar] = vetor[i]
indice_impar++

outra, leia atentamente o que eu lhe expliquei.


for(i=num/2;i<num;i++){
printf("digite os valores do vetor:\n");
scanf("%d",&vetor[i]);
if(vetor[i]%2!=0)
vetor[i]=vetorpar[y];
y++;
}

isso está totalmente errado.

Pois aqui ele ira pegar os valores dos impares, apenas pegar, e não ler de novo

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz outro codigo só que esta imprimindo o vetor da forma que eu digitei e nao da maneira que o exercicio pede.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{ int* vetor;
int i,num,y=0;
int* vetorpar;
int* vetorimpar;


printf("informe o numero de elementos\n");
scanf("%d",&num);
//informando dinamicamente o vetor
vetor=(int*) malloc(num*sizeof(int));
vetorpar=(int*) malloc(num*sizeof(int));
vetorimpar=(int*) malloc(num*sizeof(int));
//atribuindo valores ao vetor
for(i=0;i<num;i++){
printf("digite os valores do vetor:\n");
scanf("%d",&vetor[i]);
if(vetor[i]%2==0)
vetorpar[i]=vetor[i];
else
vetorimpar[i]=vetor[i];



}
for(i=0;i<num;i++){
printf("vetor ordenado:%d\n",vetor[i]);

}








free(vetor);
free(vetorpar);
free(vetorimpar);








system("PAUSE");
return 0;
}

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

×