Jump to content
Fórum Script Brasil
  • 0

Trocar valores de 2 vetores


Binder

Question

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 to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

  • 0

Olá Pessoal, muito obrigado pela ajuda de vocês, infelizmente não sei c++, por isso não entendi bem a lógica.. Precisava fazer esse algoritimo em C. Com base no meu codigo postado, como ficaria?

Edited by Prog_Junior
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...