Ir ao conteúdo
  • Cadastre-se

Inverter valores de um vetor no próprio vetor


Allaim

Posts recomendados

Olá pessoal, sou novo aqui, comecei a estudar linguagem C a 4 dias atras, e estou gostando muito... mas enfim estou com um problema. To tentando fazer um programa que leia um vetor de números e inverta a ordem de elementos do vetor nesse próprio vetor. Fiz o código e aparentemente não tem nada errado, porém quando imprimo, o penúltimo índice sai com o mesmo valor do índice 1 :confused:.

Segue meu código:


main()
{
int i, v[5], v_aux;
for (i = 0; i < 5; i++)
{
printf("Informe o valor de Vetor[%d]: ", i+1);
scanf("%d", &v[i]);
}
printf("Vetor:");
for (i = 0; i < 5; i++)
printf(" %d ", v[i]);
v_aux = v[0];
for (i = 0; i < 5; i++)
{
if (i != 4)
v[i] = v[4 - i];
else
v[i] = v_aux;
}
printf("\nVetor Invertido:");
for (i = 0; i < 5; i++)
printf(" %d ", v[i]);
getche();
}

É isso ae pessoal espero que alguém me dê uma luz para eu resolver isso, por enquanto vou resolvendo outras coisas e estudando.:) Abraços!

Link para o comentário
Compartilhar em outros sites

Olá, veja seu código funcionando, veja o que mudou em algumas partes comentadas

e outras acrescentadas:


#include <conio2.h>
#include <stdio.h>
int main()
{
int i, v[5], v_aux;
for (i = 0; i < 5; i++)
{
printf("Informe o valor de Vetor[%d]: ", i+1);
scanf("%d", &v[i]);
}
printf("Vetor:");
for (i = 0; i < 5; i++){
printf(" %d ", v[i]);
// v_aux = v[0];
v_aux = v[i];
}

/*
for (i = 0; i < 5; i++)
{
if (i != 4)
v[i] = v[4 - i];
else
v[i] = v_aux;
}
*/
printf("\nVetor Invertido:");
/*
for (i = 0; i < 5; i++)
printf(" %d ", v[i]);
getche();
*/

v_aux-- ;
for (i = v_aux ; i >= 0 ; i--){
printf(" %d ", v [i]);
}
getche();
}

Link para o comentário
Compartilhar em outros sites

Opa Main.cpp valeu pela ajuda, mas ainda não é isso que eu quero, porque o problema estar na questão de inverter os valores no próprio vetor, o seu só imprime na ordem inversa, sem alterar os valores dos índices :(. Além que o seu estar com um erro, porque o v_aux estar recebendo o ultimo valor digitado e ele estar sendo usado para imprimir, de maneira que se o usuário digitar um valor menor que o tamanho do vetor, a impressão sairá incompleta. Exemplo é se for digitado 1 por ultimo, o v_aux vai ficar como 1, e na hora da impressão o for vai ficar, i = 1; i >= 0; i--, o que fará provavelmente ser impresso só um valor. Desde já agradeço a atenção vou continuar tentando. :D.

Link para o comentário
Compartilhar em outros sites

Certo! Olha fiz isto na hora do almoço por aqui, nem testei direito e em seguida

sai depressa para o trabalho, fiquei logado à tarde inteira e só descobri quando

cheguei em casa. Também não tinha entendido o que você queria, então me desculpe pelos erros.

Más o que eu queria te passar era isto que estou postando abaixo:

Quando conseguir o que você quer posta aqui no forum tá certo?


#include <conio2.h>
#include <stdio.h>
int main (){
int i, n = 5;
int vet [5];
printf("Digite os Numeros: ");
for ( i = 0; i < n; i++){
scanf("%d", &vet [i] );
}
printf("Numeros Digitados: ");
for ( i = 0; i < n; i++){
printf(" %d ",vet [i] );
}
printf("\n");
printf("Vetor invertido: ");
for ( i = n - 1; i >= 0; i--)
printf(" %d ", vet [i]);
printf("\n");
getche();
}

Abraços

Link para o comentário
Compartilhar em outros sites

^^ beleza, rsrs ta ok, por enquanto o que eu descobri é que o erro do meu código estar quando o vetor chega no índice 3 e vai receber o índice 1, o índice 1 já foi substituído :(. Pelo jeito a unica alternativa que to vendo para inverter os valores dos índice do vetor(sem ser pela exibição do print em ordem decrescente), é utilizar outro vetor para receber e devolve-lo ao contrário. De qualquer forma vou continuar tentando pensar em outro jeito que funcionasse para vetor de qualquer tamanho, porque no meu algoritmo toda vez que ultrapassar a metade do tamanho do vetor vai repetir... Pode deixar eu conseguindo aviso sim! :D

Link para o comentário
Compartilhar em outros sites

Allaim,

^^ beleza, rsrs ta ok, por enquanto o que eu descobri é que o erro do meu código estar quando o vetor chega no índice 3 e vai receber o índice 1, o índice 1 já foi substituído :(. Pelo jeito a unica alternativa que to vendo para inverter os valores dos índice do vetor(sem ser pela exibição do print em ordem decrescente), é utilizar outro vetor para receber e devolve-lo ao contrário. De qualquer forma vou continuar tentando pensar em outro jeito que funcionasse para vetor de qualquer tamanho, porque no meu algoritmo toda vez que ultrapassar a metade do tamanho do vetor vai repetir... Pode deixar eu conseguindo aviso sim! :D

Veja se é isso que você quer:

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

int main()
{

int i, aux,
n = 5, vetor[5] = {1, 2, 3, 4, 5};

for ( i = 0; i < n; i++ )
printf("%d ", vetor[i]);

printf("\n\n\n");

for ( i = 0; i < ( n / 2 ); i++ ) {
aux = vetor[i];
vetor[i] = vetor[ (n - 1) - i ];
vetor[ (n - 1) - i ] = aux;
}

for ( i = 0; i < n; i++ )
printf("%d ", vetor[i]);

return 0;
}

Veja que eu inicializei o vetor apenas para facilitar os testes...

Abs.

LNW

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!