Enunciado:
Ler um vetor A com 4 elementos. Separar os elementos pares e ímpares de A utilizando apenas um vetor extra B. Sugestão: no início do vetor B armazene os elementos pares de A e nas posições restantes do vetor B armazene os elementos de A que são ímpares.
No caso eu consegui fazer o código em python, mas não consigo fazer em C. (o append em python me ajudou muito porque ao invés de substituir posições existentes, ele acresenta posições) mas em C não está dando certo. Vou mostrar aqui o código em python e em C comentado (o em python pra ajudar a descobrir onde estou errando)
vetor=[] [HASHTAG]#Declarando[/HASHTAG] o vetor onde será armazenado
b=[] [HASHTAG]#Declarando[/HASHTAG] o vetor que irá apresentar
for i in range(0,4,1):
n = int(input("Digite o valor: "))
vetor.append(n) [HASHTAG]#Armazenando[/HASHTAG] os valores ao vetor
for i in range(0,4,1):
if vetor % 2 == 0: [HASHTAG]#Testando[/HASHTAG] se ele é par
b.append(vetor) [HASHTAG]#Caso[/HASHTAG] ele seja, armazena ao vetor b
for i in range(0,4,1):
if vetor % 2 != 0: [HASHTAG]#Testando[/HASHTAG] se ele é ímpar
b.append(vetor) [HASHTAG]#Acrescentando[/HASHTAG] nas posições restantes
print("\n")
for i in b:
print(i) [HASHTAG]#Apresentando[/HASHTAG]
Agora o código em C que está dando errado:
[code=C]#include
#include
int main(){
int a[4],b[4],i,cPar=0,cImpar=0,j=0;
for(i=0;i<4;i++){
printf("Digite o %d. valor: ",i+1);
scanf("%d",&a); //Lê os números e os armazena no vetor a
if(a%2==0){
cPar++; //Incrementa caso seja par para definir onde começar o for do ímpar
}
}
cPar=cPar+1; //Acrescenta mais um para o for do ímpar não substituir o último número na posição do par
for(i=0;i<4;i++){
if(a%2==0){ //Caso seja par vai ir acrescentando os números nas primeiras posições
b[ i ]=a[ i ];
}
}
for(i=cPar;i<4;i++){ //Como já se sabe quantos números pares tem, ele inicia a partir da última posição do número par
if(a[j]%2!=0){ //Se não for par ele vai atribuir na posição i (posição após o último par) o j que foi testado (j para não bugar)
b[ i ]=a[j]; //Como i é o número da posição, j é o número normal. Aí vai incrementando ambos e colocando nas posições restantes
j++;
}
}
for(i=0;i<4;i++){
printf("\n %d ",b); //Aqui apresenta o vetor b com as posições trocadas.
}
printf("\n\n\n");
system("pause");
return(0);
}[/code]
Por algum motivo esse código não está dando certo, e como não tenho o append em C para me ajudar, não sei o que fazer. Se alguém puder me ajudar eu agradeço.
EricCartman
Novo Membro
Registrado
16 Mensagens
7 Curtidas
[Resolvido] [Ajuda] Trocar as posições do vetor em C
#1 Por EricCartman
16/01/2018 - 02:57