Ir ao conteúdo
  • Cadastre-se
gprilopes

RESOLVIDO Imprimir o índice par e impar de 2 vetores

Recommended Posts

Olá meus caros,

 

Preciso de uma ajuda:

 

Preciso criar 4 vetores, a,b,c,d o vetor a e b vão receber valores, mas eu preciso armazenar no vetor c os índices par e no vetor d o índices impar:

Compartilhar este post


Link para o post
Compartilhar em outros sites
Ler 6 elementos (valores inteiros) para os vetores A e B. Construir o
vetor C e com o mesmo tipo e dimensão, sendo que o vetor C deve ser
formado pelos elementos de índice ímpar dos vetores A e B, e o vetor D
deve ser formada pelos elementos de índice par dos vetores A e B.
Apresentar os vetores C e D.

Eu consegui fazer apanas com um vetor

 

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

main (){ // PONTO BOM
    
        int a[5];
        int b[5];
        int c[5];
        int d[5];
        int i,j;
        
        // FOR PARA LER NUMEROS
        for (i=0;i<5;i++){
            
            printf ("Digite um numero:\n");
            scanf ("%d",&a);
            
        }
        
        for (i=0;i<5;i++){
            
            if (i % 2 == 0){
                
                c = i;
                
                printf ("Par: %d\n",c);
            }
                        
        }    
        
        for (i=0;i<5;i++){
            
            if (i % 2 != 0){
                
                d = i;
                
                printf ("Impar: %d\n",d);
            }
                        
        }
        
    
    system ("pause");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta isso:

 

#include <stdio.h>#include <stdlib.h>#define MAXV 6int main() {  int a[MAXV], b[MAXV], c[MAXV], d[MAXV], i, i_c = 0, i_d = 0;;  printf("Insira os valores do vetor A\n");  for(i = 0; i < MAXV; i++)    scanf("%d", &a[i]);  printf("Insira os valores do vetor B\n");  for(i = 0; i < MAXV; i++)    scanf("%d", &b[i]);  for (i = 0; i< MAXV; i++)    if (i % 2 == 0) {      c[i_c] = a[i];      i_c++;      c[i_c] = b[i];      i_c++;    }    else {      d[i_d] = a[i];      i_d++;      d[i_d] = b[i];      i_d++;    }  imprime_vetor(c);  imprime_vetor(d);  system("pause");  return 0;}void imprime_vetor(int *v) {  int j;  printf("\nVetor: ");  for (j = 0; j < MAXV; j++)    if(v[j] != -1)      printf("%d ", v[j]);  printf("\n");}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu amigo obrigado pela força, mas esse codigo ainda não esta imprimindo o valor da posição do vetor c que deve ser par e do vetor d que deve ter as posições impares armazenadas

 

#include <stdio.h>
#include <stdlib.h>
#define MAXV 6

int main() {
  int a[MAXV], b[MAXV], c[MAXV], d[MAXV], i, i_c = 0, i_d = 0;;

  printf("Insira os valores do vetor A\n");
  for(i = 0; i < MAXV; i++)
    scanf("%d", &a);

  printf("Insira os valores do vetor B\n");
  for(i = 0; i < MAXV; i++)
    scanf("%d", &b);

  for (i = 0; i< MAXV; i++)
    if (i % 2 == 0) {
      c[i_c] = a;
      i_c++;
      c[i_c] = b;
      i_c++;

    }
    else {
      d[i_d] = a;
      i_d++;
      d[i_d] = b;
      i_d++;
    }

  for (i=0;i< MAXV;i++){
      
      printf ("Par: %d\n",c[MAXV]);
      printf ("Impar: %d\n",d[MAXV]);
      
  }

  system("pause");
  return 0;
}

void imprime_vetor(int *v) {
  int j;
  printf("\nVetor: ");
  for (j = 0; j < MAXV; j++)
    if(v[j] != -1)
      printf("%d ", v[j]);

  printf("\n");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, não estou entendendo o que você quer, explique direito, pois o algoritmo que lhe mandei imprime os vetores C e D.

o vetor C foi preenchido com os valores do a e do b, onde o i é um numero par

o vetor D foi preenchido com os valores do a e do b, onde o i é um numero impar

no C o primeiro indice do vetor não é o 1 e sim o 0, caso o problema seja esse, é só trocar isso:

 

 if (i % 2 == 0) {      c[i_c] = a[i];      i_c++;      c[i_c] = b[i];      i_c++;    }

trocar por isso:

 

 if (i % 2 == 1) {      c[i_c] = a[i];      i_c++;      c[i_c] = b[i];      i_c++;    }

Caso não seja esse o problema, especifique mais seu problema, com um exemplo de entrada nos vetores A e B. E mostre como teria que ser a saida do seu programa, mostrando todos os elementos do vetor C e D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não quero imprimir o valor que foi digitado no vetor e sim armazenar no vetor c e no vetor d os indices do vetor a que é par e os indices do vetor c q é impar, independente do valor que vai dentro do vetor

 

exemplo

 

if (i % 2 == 0){

 

c = i;

 

}

 

eu não quero assim

 

if (i % 2 == 0){

 

c = a;

 

}

 

 

meu maior problema esta em juntar os índices pares do vetor a e armazenar em c e os índices do vetor b armazenar no vetor c sem substituir o que já tem dentro que é o índice par do vetor a e fazer o mesmo com o vetor b so que impar mas tem que imprimir o índice par e impar e não o conteudo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá, supomos que eu fiz o programa, ai eu fiz essa entrada. EXEMPLO:

preenche o vetor A: 1-2-3-4-5-6
preenche o vetor B: 7-8-9-10-11-12

Ai o vetor C deve ficar assim: 0-2-4-0-2-4

e o vetor D deve ficar assim: 1-3-5-1-3-5

é assim que tem que ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, esse algoritmo não faz o menos sentido, pois o que ele faz inserir os números pares do intervalo 0...N em um vetor, e os números ímpares em outro vetor. Digitar os valores é uma perda de tempo já que não se usa eles no programa. Tai a versão modificada. e abaixo o código do que realmente importa no algoritmo.

#include <stdio.h>#include <stdlib.h>#define MAXV 6int main() {  int a[MAXV], b[MAXV], c[MAXV], d[MAXV], i, i_c = 0, i_d = 0;  printf("Insira os valores do vetor A\n");  for(i = 0; i < MAXV; i++)    scanf("%d", &a[i]);  printf("Insira os valores do vetor B\n");  for(i = 0; i < MAXV; i++)    scanf("%d", &b[i]);  //procura os indices no vetor A  for (i = 0; i< MAXV; i++)    if (i % 2 == 0) {      c[i_c] = i;      i_c++;    }    else {      d[i_d] = i;      i_d++;    }  //procura os indices no vetor B  for (i = 0; i< MAXV; i++)    if (i % 2 == 0) {      c[i_c] = i;      i_c++;    }    else {      d[i_d] = i;      i_d++;    }  imprime_vetor(c);  imprime_vetor(d);  system("pause");  return 0;}void imprime_vetor(int *v) {  int j;  printf("\nVetor: ");  for (j = 0; j < MAXV; j++)    if(v[j] != -1)      printf("%d ", v[j]);  printf("\n");}

Versão que faz sentido

 

#include <stdio.h>#include <stdlib.h>#define MAXV 6int main() {  int a[MAXV], b[MAXV], c[MAXV], d[MAXV], i, i_c = 0, i_d = 0;  //procura os indices no vetor A  for (i = 0; i< MAXV; i++)    if (i % 2 == 0) {      c[i_c] = i;      i_c++;    }    else {      d[i_d] = i;      i_d++;    }  //procura os indices no vetor B  for (i = 0; i< MAXV; i++)    if (i % 2 == 0) {      c[i_c] = i;      i_c++;    }    else {      d[i_d] = i;      i_d++;    }  imprime_vetor(c);  imprime_vetor(d);  system("pause");  return 0;}void imprime_vetor(int *v) {  int j;  printf("\nVetor: ");  for (j = 0; j < MAXV; j++)    if(v[j] != -1)      printf("%d ", v[j]);  printf("\n");}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi 

 

imprime_vetor(c);
imprime_vetor(d);


Amigo obrigado pela sua ajuda, mas o seu programa não compila, se você puder passar a sua ideia seu a padronização do void t agradeço, pois não consigo entender o que você quer dizer com imprime vetor c e d, acho que você não deve estar conseguindo me entender mas agradeço mesmo assim


Obrigado pela ajuda Cyro, assim resolveu

#include <stdio.h>
#include <stdlib.h>
#define MAXV 6

int main() {
  int a[MAXV];
  int b[MAXV];
  int c[MAXV];
  int d[MAXV];
  int i;
  int par = 0;
  int impar = 0;

  printf("Insira os valores do vetor A: \n");
  for(i = 0; i < MAXV; i++)
    scanf("%d", &a);

  printf("Insira os valores do vetor B: \n");
  for(i = 0; i < MAXV; i++)
    scanf("%d", &b);

  //procura os indices no vetor A
  for (i = 0; i< MAXV; i++)
    if (i % 2 == 0) {
      c[par] = i;
      par++;

    }
    else {
      d[impar] = i;
      impar++;
    }

  //procura os indices no vetor B
  for (i = 0; i< MAXV; i++)
    if (i % 2 == 0) {
      c[par] = i;
      par++;

    }
    else {
      d[impar] = i;
      impar++;
    }
    
    for (i = 0; i< MAXV; i++){
        printf ("Os indices pares sao: %d\n",c);
        printf ("Os indices impares sao: %d\n",d);        
    }

  system("pause");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

CyroBoy não consegui resolver esse problema, consegue dar uma atenção para ele?

 

Obs: o vetor B tem que ter outro contador por exemplo j, pois da forma que esta ele esta repetindo o indice do contador i na inversão

 

 

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

int main() {
  int a[6];
  int b[6];
  int c[6];
  int d[6];
  int i,j;
  int par = 0;
  int impar = 0;

  printf("Insira os valores do vetor A: \n");
  for(i = 0; i < 6; i++)
    scanf("%d", &a);

  printf("Insira os valores do vetor B: \n");
  for(i = 0; i < 6; i++)
    scanf("%d", &b);

  //procura os indices no vetor A
  for (i = 0; i< 6; i++)
    if (i % 2 == 0) {
      c[par] = i;
      par++;
    }
    else {
      d[impar] = i;
      impar++;
    }

  //procura os indices no vetor B
  for (i = 0; i< 6; i++)
    if (i % 2 != 0) {
      d[impar] = i;
      impar++;

    }
    else {
      c[par] = i;
      par++;
    }
    
    for (i = 0; i< 6; i++){
        printf ("Os indices pares sao: %d\n",c);
     }
    for (i = 0; i< 6; i++){
        printf ("Os indices impares sao: %d\n",d);        
    }

  system("pause");
}


CyroBoy a ideia é não importa o que você digita nos vetores, mas sim o indice deles, e então a miha duvida é na ora de fazer o contador ir para o outro for, pois eu tenho o seguinte:

 

ex:

 

vet_a[6] ele tem indices que são 0 - 1 - 2 - 3 - 4 - 5, eu preciso de um contador i para fazer o if e ver qual é par e qual é impar e jogar o indice par para o vet_c[6] que vai ficar 0 - 2 - 4 e o impar para o vet_d[6] que vai ficar 1 - 3 - 5 depois eu preciso de um vetor b ex: vet_b[6] ele tem indice 0 - 1 - 2 - 3 - 4 - 5, eu preciso de outro contador j para fazer outro if e vai verificar se tem indice par ele joga para o vetor c no caso vet_c[6] 0 - 2 - 4 - 0 - 2 - 4 que já tem elemenos nele e vai acreascentar o par do vetor b e se for impar joga para outro vetor que é o vetd[6] 1 - 3 - 5 - 1 - 3 - 5 por isso preciso de 2 contadores diferentes

Compartilhar este post


Link para o post
Compartilhar em outros sites

CiroBoy calma....kkkkk eu sei que o negocio é da China mas olha só o mesmo código sem o vetor b ele faz a mesma coisa se tivesse com o vetor, por isso que precisa de 2 contadores compila esse código que eu estou t enviando para você ver que desta forma ele esta repetindo o mesmo contador por isso que precisa ser dois

 

#include <stdio.h>
#include <stdlib.h>
#define MAXV 6

int main() {
  int a[MAXV];
  //int b[MAXV];
  int c[MAXV];
  int d[MAXV];
  int i;
  int par = 0;
  int impar = 0;

  printf("Insira os valores do vetor A: \n");
  for(i = 0; i < MAXV; i++)
    scanf("%d", &a);

  /*printf("Insira os valores do vetor B: \n");
  for(i = 0; i < MAXV; i++)
    scanf("%d", &b);*/


  //procura os indices no vetor A
  for (i = 0; i< MAXV; i++)
    if (i % 2 == 0) {
      c[par] = i;
      par++;

    }
    else {
      d[impar] = i;
      impar++;
    }

  //procura os indices no vetor B
  for (i = 0; i< MAXV; i++)
    if (i % 2 == 0) {
      c[par] = i;
      par++;

    }
    else {
      d[impar] = i;
      impar++;
    }
    
    for (i = 0; i< MAXV; i++){
        printf ("Os indices pares sao: %d\n",c);
    }
     for (i = 0; i< MAXV; i++){
        printf ("Os indices impares sao: %d\n",d);        
    }


  system("pause");
}

 

 

 a saida correta tem que ser assim:

 

Insira os valores do vetor A:
9
8
7
6
5
4
Insira os valores do vetor B:
3
2
1
2
3
4
Os indices pares sao: 0 indice do vetor A
Os indices pares sao: 2 indice do vetor A
Os indices pares sao: 4 indice do vetor A
Os indices pares sao: 0 indice do vetor B
Os indices pares sao: 2 indice do vetor B
Os indices pares sao: 4 indice do vetor B
Os indices impares sao: 1 indice do vetor A
Os indices impares sao: 3 Indide do vetor A
Os indices impares sao: 5 Indice do vetor A
Os indices impares sao: 1 Indice do vetor B
Os indices impares sao: 3 Indice do vetor B
Os indices impares sao: 5 indice do vetor B
Pressione qualquer tecla para continuar. . .

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

×