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
  • Autor do tópico
  • 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
  • Autor do tópico
  • 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

    ×