Ir ao conteúdo
  • Cadastre-se

Imprimir o índice par e impar de 2 vetores


gprilopes
Ir à solução Resolvido por gprilopes,

Posts recomendados

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

Link para o comentário
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");}
Link para o comentário
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");
}

Link para o comentário
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

Link para o comentário
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

Link para o comentário
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");}

 

Link para o comentário
Compartilhar em outros sites

  • Solução

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

Link para o comentário
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

Link para o comentário
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. . .

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...