Ir ao conteúdo

Posts recomendados

Postado

consegui resolver por acaso o exercicio, mas não entendi o seu real motivo.

 

A PARTE ESTÁ COMENTADA. (no segundo for)!!!

/*10. Escreva um algoritmo que leia um vetor de 20 posições e mostre- o. Em seguida, troque o primeiro elemento
 com o último, o segundo com o penúltimo, o terceiro com o antepenúltimo, e assim sucessivamente. Mostre o novo
  vetor depois da troca.*/
  #include <stdio.h>
  #include <stdlib.h>
  main (){
    int vet[20], i,j, cont=20, aux;

    for(i=0;i<20;i++){
        printf("Vetor [%d]: ", i);
        scanf("%d", &vet[i]);
    }
    for(i=0;i<10;i++){// NAO SEI PORQUE AQUI TEM QUE SER 10
        cont--;
        aux=vet[cont];
        vet[cont]=vet[i];
        vet[i]=aux;
    }
    printf("\n\n\n");
    for(i=0;i<20;i++){
        printf("Vetor [%d]: %d\n", i, vet[i]);
    }


  system("pause");
  return 0;
  }

 

  • Curtir 1
  • Membro VIP
Postado

Essa parte é a troca. Se são 20 números ao total, o número de trocas é 10. A quantidade de operações.

Eu quero trocar 1 e 2 eu vou fazer uma operação, ou seja, uma troca. Somente o primeiro com o último.

Eu quero trocar 1, 10, 20, 5 eu vou fazer duas operações: o primeiro com o último e o segundo com o penúltimo.

adicionado 3 minutos depois

O funcionamento desse trecho é mais ou menos assim:

 

'cont' vale 19 (cont--)

'i' vale 0

 

a troca ocorre entre 'cont' e 'i'. A posição 0 troca com a posição 19

Na próxima iteração, a posição 1 troca com a 18, a 2 com a 17, a 3 com a 16, e assim por diante. Existem 10 iterações. Por isso o laço de repetição é de 10 posições.

  • Curtir 2
  • Obrigado 1
Postado

Nesse tipo de situação faça um "teste de mesa":

 

1 2 3 4 5 6 -> tem 6 números

 

1ª troca: 6 2 3 4 5 1

2ª troca: 6 5 3 4 2 1

3ª troca: 6 5 4 3 2 1

 

Foram necessárias 3 (= 6/2) trocas para mudar todos os 6 números. Ou seja só precisa ir até a metade, pois troca 2 de 1 vez.

  • Curtir 2
  • Obrigado 1
Postado

Olá Josesousa.

Muito simples vejá como seria.:

Entrada.:

Digite o N do vetor 1.:

Digite o N do vetor 2.:

Digite o N do vetor 3.:

............... .... até o 18.:

............... .... até o 19.:

............... .... até o 20.:

Usa um for para a saida da variavel.

Saida.:

Vetor 1.: 20

Vetor 2.: 19

Vetor 3.: 18

............

Vil, basta sô inverter usado while ou for, que seja de sua vantade.

Vai ter  a saida com valor invertido.

Espero ter ajudado é até...

Luís.

  • Curtir 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...