Duvidas em exercicio, troca e exibição de valores em um vetor?

Estudo programação a pouco tempo e estou com duvida na resolução do exercício, que se segue abaixo:

Trocar os valores de um VetorA para um VetorB, e imprimir o VetorB com os valores de A e o Vector de A com os valores de B?

int n, m, aux, vectorA[5], vectorB[5];

printf("\tPROGRAMA QUE IMPRIME OS VALORES DE DOIS VECTORES TROCADOS\n\n");
		
for (n = 0; n < 5; n++){
	printf("Digite o VectorA[%d]: ", n);
	scanf("%d", &vectorA[n]);
}

	printf("\n\n");

for (m = 0; m < 5; m++){
	printf("Digite o VectorB[%d]: ", n);
	scanf("%d", &vectorB[m]);
}

	printf("\n\n");

	aux = vectorA[n];
	vectorA[n] = vectorB[m];
	vectorB[m] = aux;
			
	printf("\n\n");

for (n = 0; n < 5; n++){
	printf("vectorA[%d]", n);
}

	printf("\n\n");

for (m = 0; m < 5; m++){
printf("vectorB[%d]", m);		
}

Caro Mauro, boa noite!

Você até começou bem. Criou dois vetores e solicitou/preencheu cada elemento do vetor. É importante lembrar que, para vetores, ao menos no início, “qualquer” operação que você for fazer, deverá passar por cada elemento do vetor. Veja que, por exemplo, a sua variável aux recebe o vectorA[n] onde n sairá do primeiro for com o valor 5! Teremos aí dois problemas sendo eles:

  • Apenas um item do vetor estaria sendo acessado;
  • O elemento do vetor, para este caso o vectorA[5], não existe.

Enfim, uma forma bem simples de resolver este problema seria declarando um vetor auxiliar vectorAux[] de para cada elemento vectorAux[i] receber os elementos vectorA[i], vectorA[i] receber os elementos de vectorB[i] e por fim, vectorB[i] receber os elementos de vectorAux[i].

Qualquer dúvida estamos aí.

1 curtida

Apensa para confirmar, o trecho de código em que, suportamente, realiza a troca é este

printf("\n\n");

aux = vectorA[n];
vectorA[n] = vectorB[m];
vectorB[m] = aux;
			
printf("\n\n");

Raciocina comigo: um vetor possui mais de uma posição, não é mesmo? Como você faz para percorrer um vetor e obter ou determinar o valor de cada posição existente nele?

Já pensou em criar o algoritmo disso, antes de tentar programar?

Algoritmo "semnome"
// Disciplina  :  [Linguagem e Lógica de Programação] 
// Professor   : Antonio Carlos Nicolodi 
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 10/04/2017
Var
// Seção de Declarações das variáveis 
n, m, aux : inteiro
vectorA, vectorB : vetor [1..2] de inteiro

Inicio
// Seção de Comandos, procedimento, funções, operadores, etc...
m <- 5
para n de 1 ate m faca
     escreval("Digite o ", n, "º valor do vetor A")
     leia(vectorA[n])
fimpara
escreval("")
para n de 1 ate m faca
     escreval("Digite o ", n, "º valor do vetor B")
     leia(vectorB[n])
fimpara

para n de 1 ate m faca
     aux <- vectorA[n]
     vectorA[n] <- vectorB[n]
     vectorB[n] <- aux
fimpara

escreval("Apresentando vectorA")
para n de 1 ate m faca
     escreval(vectorA[n])
fimpara

escreval("Apresentando vectorB")
para n de 1 ate m faca
      escreval(vectorB[n])
fimpara

Fimalgoritmo

Muito obrigado pelas dicas. Graças a Deus e a prática consegui fazer e perceber como ele deve rolar. O segredo esta na lógica em que escrevemos os nossos códigos, porque o computador apenas faz o que por nos for mandado. Mais uma vez, muito obrigado!

Lembro das minhas primeiras aulas de lógica de programação/c++ (eram alternadas, numa criávemos algoritmos, na outra implementávamos os programas). O professor Paulo Cayres (excelente professor e pessoa) nos dizia:
“O computador é burro, vai fazer tudo o que você mandar.”.

1 curtida