Ir ao conteúdo
  • Cadastre-se

Duvida em um exercício sobre vetores


AloneSmile
Ir à solução Resolvido por dontpanic,

Posts recomendados

Olá boa noite.
O exercício tem como objetivo: Ler dois vetores A e B com 6 elementos. O vetor A deve aceitar apenas a entrada de valores  pares,  enquanto  o  vetor  B  deve  aceitar  apenas  a  entrada  de  valores  ímpares.  A entrada dos vetores deve ser validada pelo programa e não pelo usuário. Construir um vetor C de forma que ele seja a junção dos vetores A e B, de modo que o vetor C contenha 12 elementos. Apresentar o vetor C.
 
Segue o que fiz até o momento:

#include <stdio.h>#include <stdlib.h>#define tam 6int main(){	int a[tam], b[tam], c[tam*2], num[tam*2];	int i, par=0, impar=0;	for(i=0; i<tam; i++){            printf("Informe um valor: ");            scanf("%d", &num[i]);	}        a[tam] = num[0];        b[0] = num[0];        for(i=0; i<tam; i++){            if (num[i] % 2 == 0)//Par                a[i] = num[i];            else                a[i] = NULL;        }        for(i=0; i<tam; i++){            if (num[i] % 2 == 0)//Par                b[i] = NULL;            else                b[i] = num[i];        }        printf("Par: ");        for(i=0; i<tam; i++){            printf(" %d ", a[i]);        }        printf("\nImpar: ");        for(i=0; i<tam; i++){            printf(" %d ", b[i]);        }}

A duvida é o seguinte, como tiro aqueles 0 na tela final ao usuario (que foi a unica maneira que encontrei de fazer o alg funcionar) e mostre apenas o números que são pares e impares? Valeu desde já agradeço, abraço.

 

Link para o comentário
Compartilhar em outros sites

  • Solução

Pelo que eu entendi do enunciado, você precisa primeiro preencher o vetorA apenas com elementos pares, depois o vetorB apenas com elementos ímpares, e depois colocar tudo no vetorC.

 

Mas você tá preenchendo um vetor temporário, depois pegando os valores desse vetor temporário e colocando nos vetores A e B.

 

Ou seja, se o usuário digitar apenas valores pares, o vetor B vai ficar vazio.

Outro problema é que você tá passando o valor NULL pro seu vetor de ints. Mas NULL não é do tipo int.

 

O seu programa deveria ser assim:

 

#include <stdio.h>#include <stdlib.h> int main() {    int vetorA[6];    int vetorB[6];    int vetorC[12];    int x;     // Pede pro usuário preencher o vetorA aqui    { ... }     // Pede pro usuário preencher o vetorB aqui    { ... }     // Com os elementos de vetorA e vetorB você preenche os elementos do vetorC aqui    { ... }     // Imprime os elementos de vetorC    for (x = 0; x < 12; x++)        printf("%d ", vetorC[x]);     printf("\n");     return 0;}

 

Pra preencher os vetores com os dados que o usuário digitar, e ao mesmo tempo testar se eles são pares ou ímpares, você pode usar um DO/WHILE:

 

x = 0;do {    printf ("Digite um valor pro vetorA");    scanf("%d", &vetorA[x]);    if (vetorA[x] % 2 == 0)        x++;} while (x < 6);

 

No código acima, quando o usuário digitar um valor pro vetorA, o programa testa se aquele valor é PAR, caso ele seja, então passa pro próximo elemento do vetorA (com x++). Se não for par, então o DO/WHILE repete a mesma posição do vetor.

 

Pra preencher os valores do vetorC, você pode usar a regra que quiser. O enunciado não diz como você deve fazer a junção. Então você pode por exemplo, colocar os elementos do vetorA nas posições 0 até 5 do vetorC, e os elementos do vetorB nas posições 6 até 11.

 

Exemplo:

for (x = 0; x < 6; x++) {    vetorC[x] = vetorA[x];    vetorC[x+6] = vetorB[x];}

 

É isso.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...