Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sarcofagobra

Como inverter os vetores?

Recommended Posts

Leia um vetor de 16 posições e troque os 8 primeiros valores pelos 8 últimos e vice-e-versa. Escreva ao final o vetor obtido.

Eu to fazendo esse algoritmo como se fosse 4 posições e trocando os 2 ultimos valores pelos 2 primeiros, pra eu ir testando e ir andando mais rápido. O que não tô conseguindo fazer é MOSTRAR na tela, esse valores digitados pelo usuário de forma invertida.

 

Link do codepad-->http://codepad.org/jS3fctxx

 

#include <stdio.h>
int main (void)
{
int vet[4],c,a,b;
float mult=0;
for (c=0;c<4;c++)
{
   printf("Digite o valor da posicao %d- ", c+1);
   scanf("%d", &vet[c]);
}


   printf("Os 2 primeiros valores sao\n");
 for (c=0;c<2;c++)
   {
   printf("--> %d \n",vet[0+c]);
}
printf("Os 2 ultimos sao \n");
for(c=2;c>0;c--)
{
printf("--> %d \n",vet[4-c]);
}


system("pause");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

// algo assim
#include<stdio.h>

int main() {
  int vetor[16] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
  int aux, i;
  for(i = 0; i < 8; ++i)  {
    aux = vetor[i+8];
    vetor[i+8] = vetor[i];
    vetor[i] = aux;
  }

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

 

Abraco...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for um vetor de 60 posições, você muda o i<16 para i<60:

 

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

 

Para:

 

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

 

 

O código abaixo calcula tudo para o tamanho da matriz que você inserir em #define TAMANHO_MATRIZ:

 

#define TAMANHO_MATRIZ Tamanho_Em_Números

 

#include <stdio.h>

// Tamanho da matriz
#define TAMANHO_MATRIZ 60

int main() {
  int matriz[TAMANHO_MATRIZ];
  int aux;
  register int i; // Para loops

  // Define os valores da matriz
  for(i = 0; i < TAMANHO_MATRIZ; ++i)
   matriz[i] = i+1;

  for(i = 0; i < TAMANHO_MATRIZ / 2; ++i) 
  {
    aux = matriz[i+ (TAMANHO_MATRIZ / 2)];
    matriz[i+ (TAMANHO_MATRIZ / 2)] = matriz[i];
    matriz[i] = aux;
  }

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

  return 0;
}

 

 

PS: Não testei, vê se deu certo...

PS2: O especificador register coloca a variável i, que estou usando para loops em um local mais fácil de acesso na memória, tornando-a muito mais rápida. Isso faz com que os loops sejam mais rápidos. Ainda assim, deve-se ter cuidado ao usar o especificador register, pois normalmente só se consegue usar 1 ou 2 variáveis register, e ainda deve-se saber onde usar o especificador para alcançar o aumento de velocidade. Não o use enquanto não estiver sabendo como usar. Se quiser, pode tirar, não fará nenhuma mudança substancial no programa.

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.