Ir ao conteúdo
  • Cadastre-se

Inversao de vetor


Posts recomendados

Galera,seguinte,estou com uma duvida,estou querendo por meu numero na posiçao 0 ,na 8 posiçao e o da 8 na primeira(estou tentando inverter meu vetor) eu posso fazer A=A[i+8] ? é possivel eu fazer dessa forma? somar o i + uma certa quantidade para ir buscar meu numero la na oitava posiçao?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Rafael Filho    você quer inverter o vetor todo ou apenas essas duas posições ?  

para inverter todo você precisa de um outro vetor e usar um loop com o número de posições e colocar os números ao contrário   assim:

#include <stdio.h>
int vetor[8]={1,2,3,4,5,6,7,8};
int vetor2[8],i,j;
int main(){
    j=7;
    for(i=0;i<8;i++){
        vetor2[i]=vetor[j];
        j--;
    }
    for(i=0;i<8;i++){
        vetor[i]=vetor2[i];
        printf("%d - ",vetor[i]);
    }
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Em 5/15/2017 às 20:57, Rafael Filho disse:

Galera,seguinte,estou com uma duvida,estou querendo por meu numero na posiçao 0 ,na 8 posiçao e o da 8 na primeira(estou tentando inverter meu vetor) eu posso fazer A=A[i+8] ? é possivel eu fazer dessa forma? somar o i + uma certa quantidade para ir buscar meu numero la na oitava posiçao?

 

Você quer inverter todo o vetor?

Você vai precisar de um valor auxiliar... Tipo:

int aux = A[8];
A[8] = A[0];
A[0] = aux;

É possível fazer a soma sim, mas na sua inversão acho que não faz sentido... Você já sabe a posição, não precisa processar até chegar lá. E se for inversão completa do vetor, você pode ir invertendo dos extremos até o meio, da no mesmo.

 

Que linguagem está usando? Olhe, fiz em C um algoritmo que faz a inversão completa...

Troca as posições:

 

0 com 7

1 com 6

2 com 5

3 com 4

 

No caso, é um vetor de tamanho 8, então ele vai de 0 até 7.

Se você quiser algo mais simples e compreensível o exemplo do @devair1010 é excelente.

 


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

void inverterVetor(int[], int, int);

int main()
{
	int vetor[8] = {1, 2, 3, 4, 5, 6, 7, 8};
	int i;

	printf("Antes da inversao...\n");
	for(i = 0; i < 8; i++)
		printf("%d: %d\n", i, vetor[i]);
	printf("\n");
	
	inverterVetor(vetor, 0, 7);

	for(i = 0; i < 8; i++)
		printf("%d: %d\n", i, vetor[i]);
	printf("\n");
	
	printf("\n\nFinalizada a inversao...\n\n");
	return 0;
}

void inverterVetor(int* vetor, int inicio, int fim)
{
	int aux;

	if(inicio >= fim)
		return;

	aux = *(vetor+inicio);
	*(vetor+inicio) = *(vetor+fim);
	*(vetor+fim) = aux;

	inverterVetor(vetor, inicio + 1, fim - 1);
}

 

  • Curtir 1
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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!