Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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;
}

Editado por dif
Tag CODE

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

Editado por dif
Usar a tag CODE para postar seus códigos

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

Editado por dif
Usar a tag CODE para postar seus códigos

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






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

×