Ir para conteúdo
Fórum Script Brasil
  • 0

Trocar valores de 2 vetores


Binder

Pergunta

Olá pessoal estou com probleminha, Tenho 2 vetores de inteiros de 5 posições (a[5],b[5]) não estou consigo fazer a troca dos valores dos vetores da seguinte forma:

Após a leitura adicione os elementos do vetor A no vetor B de forma inversa, onde a posição B[1], possuirá o conteúdo de A[5], a posição B[2], possuirá o

conteúdo de A[4], e assim por diante, até que a posição B[5], contenha A[1].

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

int main (){
   
   int i,a[5],b[5];
   
       
    //preenche o vetor a
    for(i=0;i<5;i++)
    {
       printf("Informe %d valor para a:",i+1);
       scanf("%d",&a[i]);
    }
    
    //preenche o vetor b 
    for(i=0;i<5;i++)
    {
       printf("Informe %d valor para b:",i+1);
       scanf("%d",&b[i]);
    } 


    for(i=0;i<5;i++)
    { 
       b[i] = a[i];      // aqui não está funcionando conforme solicitado.
      
    }

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

:blink:

Colega Boa Noite!!!!

Se eu entendi bem sobre o enunciado do problema proposto......

Inserção de valores inteiros em dois vetores de forma que logo a seguir fariamos a

permuta entre os vetores na ordem que o vetor inteiro A exibirá o inverso de B, e o vetor

inteiro B exibirá o inverso do vetor A.

A ideia a principio permanece identica ao raciocinio desenvolvido por você no algoritimo

acima, só que para tornar o codigo um pouco mais funcional alem do subscrito i que você

utilizou na estrutura for para os dois vetores; que tal escrevermos mais um subscrito j para

o vetor B.

Segue abaixo o desenvolvimento algoritimico da ideia:

Algoritimo{Povoar dois Vetores do Tipo inteiro de indice superior 5 e apresenta-los de minisgay  com os elementos de A em B, e de B em A}

 Declare:
  contante inteiro: intervalo_inferior <- ( 0 );
  constante nteiro: intervalo_superior <-  ( 5 );

  Literal:vetor_A[intervalo_superior], vetor[intervalo_superior];
  inteiro: trocador_de_posicao <- ( 0 );
  inteiro: i,j;


  /*Segundo alguns cabeçudo da área é sempre bem-vindo a inicialização das variaveis. Inicializando os vetores: A & B*/

 Para:(i = (intervalo_inferior); ate i <= (intervalo_superior); de Passo i = ( i + 1))Faça
 {
   vetor_A[i]  <- ( 0 );
 }


 Para:(j <- (intervalo_inferior); até j <-  (intervalo_superior); de Passo j <-  (j + 1))Faça
 {
   vetor_B[j] <- ( 0 );
 }


 /*Povoando as casinhas do vetor com valores informados pelo teclado*/
 Para:(i <- (intervalo_inferior); i <- (intervalo_superior); de Passo i <-  (i + 1))Faça
 {
   escreva:"Informe o valor do" :(i + 1) : "º Inteiro Positivo:";
   leia: vetor_A[i];
 }

 Para:(j <- (intervalo_inferior); j <- (intervalo_superior); de Passo j <- (j+1)Faça
 {
   escreva:"Informe o valor do:(j + 1)" :" º Inteiro Positivo:";
   Leia : vetor_B[j];
  }


  /*Agora aqui é que reside o segredo do Minisgay.A idéia é quase semelhante à ordenação de Vetores*/

  j <- (intervalo_superior);

 Para:(i <- (intervalo_inferior); ate i <- (intervalo_superior); de Passo i <- (i + 1))Faca
 {
   trocador_de_posicao  <- (vetor_A[i]);
   vetor_A[i] <- (vetor_B[j]);
   vetor_B[j] <- (trocador_de_posicao);
    /*Decrementando o subscrito e/ou indice j */
   j <-  ( j - 1 );
  }

  /*Imprimindo na Tela o Resultado Final da Operação.*/

  escreva:"O Valores que estavam em A e passou para B de forma minisgay:";
  Para:(i <- (intervalo_inferior); i <= (intervalo_superior); de Passo i <- (i + 1))
  {
    escreva: vetor_A[i];
  }

  escreva:"Os Valores que estavam em B e passou para A de forma minisgay:";
  Para:(j <- (intervalo_inferior); j <- (intervalo_superior); de Passo j <- (j + 1))
  {
    escreva: vetor_B[j];
  }

:wub:

Ai Jesuis!!!! quero ser um hacker com práticas p/a o Beimmm!!!!!!!!!!!!!!!!!

Link para o comentário
Compartilhar em outros sites

  • 0

É um algoritmo de troca reversa.

Quando você faz isso:

for(i=0;i<5;i++)
    {
       b[i] = a[i];      // aqui não está funcionando conforme solicitado.
      
    }
Você atribui o elemento de um índice no mesmo índice do outro vetor. Você precisa de duas variáveis de controle. Uma que vá incrementando, e uma que vá decrementando. Cada uma controla um vetor. E para a troca, uma variável auxiliar. Para vetores de 5 posições, uma maneira de se fazer o for() é:
for(i=0, j=4; i<5; i++, j--)

Link para o comentário
Compartilhar em outros sites

  • 0

Dica Valiosa do mJi, sempre com um macetim para enxugar o código.

Se captamos bem o raciocionio lógico, segue abaixo o desenvolvimento do fragmento do Problema.Desenvolvido em C++

#include<conio.h>

#include<iostream>
using namespace std;
using std::cin;
using std::cout;
using std::endl;

#include<cstdlib>

#if !defined( z )
#define z 0
#endif

#if !defined( u )
#define u 1
#endif

#if !defined(fator_inicial)
#define fator_inicial z
#endif

#if !defined(fator_de_teste)
#define fator_de_teste 5
#endif

#if !defined(fator_incremento)
#define fator_incremento
#endif

unsigned long int main()
{
 system("CLS");

 unsigned long int subs_x = ( z );
 unsigned long int subs_y = ( z );
 unsigned long int vetor_A[fator_de_teste];
 unsigned long int vetor_auxiliar[fator_de_teste];
 unsigned long int inversao_VetorA[fator_de_teste];

  for(subs_x = (fator_inicial); subs_x < (fator_de_teste); subs_x = (subs_x + u))
  {
    cout <<"\nInforme no campo abaixo o valor do " <<(subs_x + u) <<" º Inteiro: ";
    cout <<"\nFator: "; cin >>vetor_A[subs_x];
  }

  
  /*Aqui esta a ideia do Sobe/Desce: "Os Ultimos serão os Primeiros e os Primeiros serão os Ultimos".
  o salario dos Deputados sobem enquanto do trabalhador desce.*/

  for(subs_x = (fator_inicial), subs_y = (4); subs_x < (fator_de_teste); subs_x++, subs_y--)
  {
    vetor_auxiliar[subs_y] = (vetor_A([subs_x]);
  }

  
  /*Atribuição dos Valores invertidos minisgaymente a um vetor auxiliar*/
  for(subs_x = (fator_inicial); subs_x < (fator_de_teste); subs_x++)
  {
    inversaoA[subs_x] = (vetor_auxiliar([subs_x]);
  }

  cout <<endl;

  cout <<"\nValores de A invertido:";
  for(subs_x = (fator_inicial); subs_x < (fator_de_teste); subs_x++)
  {

    cout <<inversaoA[subs_x] <<endl;
    cout <<'\n';
  }



 system("PAUSE");

 return(NULL);
}

Esta é uma idéia........Dá pra resolver em cima dela o problema proposto.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...