Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
anonymouatour

Algoritmo de troca

Recommended Posts

esse algoritmo eu analisei e vi que é de troca mas n ordena só troca, mas fique  na dúvida no código dele como comentei sobre ele abaixo;

 

 

No pseudo-código, podemos ver duas estruturas de repetição (linha 03 e 10). O primeiro controla a variável x, a variável que indica qual posição está sendo analisada. O segundo controla a variável x[i+1] que faz a procura de um valor que possa ser substituído, que neste caso (troca).

 

 ou seja , são quaisquer números que sejam menores que o número da posição x. Note que o valor de x[i+1]sempre será maior que o x, isso porque todas as posições anteriores de x já estarão com seus valores encontrado.

como mencionado anteriormente, neste caso é que se o número que está na posição x for menor que o número da posição x[i+1] então esses números deve ser trocados.

Para realizar a troca, precisaremos de uma variável auxiliar (aux) para armazenar temporariamente o valor que está na posição x. Uma vez feito isso, podemos sobrescrever a posição x com o valor da posição x[i+1]. Por último, sobrescrevemos a posição x[i+1]para guardar o valor que está na variável auxiliar, efetuando a troca de posição.

 

No caso não sei se essas duas estruturas de repetição estão certas descritas e  a parte quando ele compara 

 

1. algoritmo

2. declare X[10], n, i, aux, flag numérico

3. para i ← 1 até 10 faça

4. leia X

5. n ← 1

6. flag ← 1

7. enquanto (n ≤ 10 E flag = 1) faça

8. inicio

9. flag ← 0

10. para i ← 1 até 9 faça

11. inicio

12. se (X < X[i+1]) então

13. inicio

14. flag ← 1

15. aux ← X

16. X ← X[i+1]

17. X[i+1] ← aux

18. fim_se

19. fim_para

20. n ← n + 1

21. fim_enquanto

22. para i ← 1 até 10 faça

23. escreva X

24. fim_algoritmo

Editado por DiF
Remover excesso de itálico
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro usuário,

 

Seja bem-vindo ao Fórum do Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício.

 

Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Fórum do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários.. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • esse algoritmo cheguei a falar com professor q parecia o bolha, mas n é ele  entendo como está funcionando só nessa parte mesmo que queria tentar entender com funciona essa parte mesmo posi a questão está praticamente pronta ,esse pedaço do programa q n entendi mt mas entendo o que você diz estou querendo aprender mesmo 

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Olá. Em qual parte está com dúvidas?

     

    Esse código foi você quem fez ou está tentando entender um código de outra pessoa???

     

     

    1 hora atrás, anonymouatour disse:

    esse algoritmo cheguei a falar com professor q parecia o bolha, mas n é ele  entendo como está funcionando só nessa parte mesmo que queria tentar entender com funciona essa parte mesmo posi a questão está praticamente pronta ,esse pedaço do programa q n entendi mt mas entendo o que você diz estou querendo aprender mesmo 

     

    Então, não consegui compreender as suas explicações... tanto esse, tanto o texto inicial estão um pouco confusos para mim.. Por favor, tente descrever de uma forma mais clara e menos coloquial. (tente usar um linguagem mais formal)

     

    Mas então, vamos lá:

     

    1) POSTAGEM DE CÓDIGOS NO FÓRUM

    Para analisarmos um código, é necessário que a sua estrutura de indentação (espaçamento horizontal) esteja intacta, ou seja, seu código está apenas uma linha em baixo da outra. Além disso, está faltando algumas partes, como as coordenadas do X em alguns trechos.

     

    Por favor, edite sua postagem, apague seu código e poste novamente utilizando a tag CODE.

     

    Veja o link:

     

     

    2) ESTRUTURA DE ORDENAÇÃO

    De fato o código está meio que utilizando a base do Bubble Sort... mas talvez precise de alguns ajustes.

     

     

    8 horas atrás, anonymouatour disse:

    esse algoritmo eu analisei e vi que é de troca mas n ordena só troca, mas fique  na dúvida no código dele como comentei sobre ele abaixo;

    Então, como já comentei, eu não consegui entender muito bem o que quis dizer, mas poderíamos dizer ele não é um algoritmo de trocas em si... ele está mais para um algoritmo de ordenação... trocas é apenas uma consequência dessa operação de ordenar... entende?

     

    E creio que ele está sim ordenando (em ordem decrescente)... talvez precise apenas de pequenos ajustes, ou seja, a base dele se assemelha ao Bubble Sort, mas precisa dar uma otimizada.

     

     

    ***

     

    No aguardo.

    • Curtir 2

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • @Simon Viegas é mais uma questão de concurso publico que achei na net e parei pra esutdar ela mas n entendi como funciona algumas partes do pseudocodigo vamos dizer assim

    adicionado 1 minuto depois

    ele me disse que não está ordendando apenas trocando isso que fiquei confuso porque ele parece o buble como você falou

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Olá @anonymouatour.
     

    Como citado:

    Em 30/05/2017 às 19:32, Simon Viegas disse:

    não é um algoritmo de trocas em si... ele está mais para um algoritmo de ordenação... trocas é apenas uma consequência dessa operação de ordenar

     

     

    Abaixo tentei reorganizar e deixei alguns comentários:

    algoritmo "questão concurso"
    declare X[10], n, i, aux, flag numérico //declara as variáves
    //ESTRUTURA PARA LEITURA DE DADOS VIA USUÁRIO
    para i<-1 até 10 faça //para ler um números via teclado de cada posição do vetor
       leia(X[i])
    
    //ESTRUTURA QUE ORDENARÁ O VETOR EM ORDEM DECRESCENTE
    n<-1 //inicializa o contador que controla a posição do vetor
    flag<-1 //inicializa marcando como "houve troca"
    enquanto (n <= 10 E flag = 1) faca //enquanto não for o fim do vetor e houve troacas
       inicio
       flag<-0 //marca como "não houve troca"  (veja, se não houver permancerá com esse valor, se houver, será marcado baixo)
       para i<-1 ate 9 faca //da primeira até a penultima posição (já que a penultima compara com a última)
          inicio
          se (X[i] < X[i+1]) então //se posição atual é MENOR que a posição posterior
             inicio //faz a permuta deles
             flag<-1 //marca como "houve troca"
             aux<-X[i]
             X[i]<-X[i+1]
             X[i+1]<-aux
             fim_se
          fim_para
       n<-n+1 //atualiza o contador que controla a posição do vetor
       fim_enquanto
    
    //ESTRUTURA PARA EXIBIR O RESULTADO
    para i<-1 até 10 faca //para exibir cada posição do vetor ordenado
       escreva(X[i])
    fim_algoritmo

     

    Resumindo:

    É uma espécie de Bubble Sort (otimizada), que ordenará o vetor em ordem DECRESCENTE.   (1-ler os números para preencher o vetor. 2-ordena o vetor em ordem decrescente 3-exibe o vetor ordenado)

     

     

    Código em VisuAlg

    algoritmo "questão concurso"
    var
      X :vetor [1..10] de inteiro //declara as variáves
      n, i, aux, flag :inteiro
      
    INICIO
    ALEATORIO ON //comando para gerar números automaticamente (para ler pelo teclado, remova essa linha e a outra mais abaixo)
    para i de 1 ate 10 faca
       leia(X[i])
    fimPara
    ALEATORIO OFF
    
    n<-1
    flag<-1
    enquanto (n<=10) E (flag=1) faca
       flag<-0
       para i de 1 ate 9 faca
          se (X[i] < X[i+1]) então
             flag<-1
             aux<-X[i]
             X[i]<-X[i+1]
             X[i+1]<-aux
          fimSe
       fimPara
    n<-n+1
    fimEnquanto
       
    para i de 1 ate 10 faca //para exibir cada posição do vetor ordenado
       escreva(X[i])
    fimPara
    fimAlgoritmo

     

    PS: download do VisuAlg:
    http://antonionicolodi.blogspot.com.br/2015/06/visualg-30-revisao-4-em-25062015.html

     

     

    No aguardo.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Em 05/06/2017 às 07:56, Simon Viegas disse:

    Olá @anonymouatour.
     

    Como citado:

     

     

    Abaixo tentei reorganizar e deixei alguns comentários:

    
    algoritmo "questão concurso"
    declare X[10], n, i, aux, flag numérico //declara as variáves
    //ESTRUTURA PARA LEITURA DE DADOS VIA USUÁRIO
    para i<-1 até 10 faça //para ler um números via teclado de cada posição do vetor
       leia(X[i])
    
    //ESTRUTURA QUE ORDENARÁ O VETOR EM ORDEM DECRESCENTE
    n<-1 //inicializa o contador que controla a posição do vetor
    flag<-1 //inicializa marcando como "houve troca"
    enquanto (n <= 10 E flag = 1) faca //enquanto não for o fim do vetor e houve troacas
       inicio
       flag<-0 //marca como "não houve troca"  (veja, se não houver permancerá com esse valor, se houver, será marcado baixo)
       para i<-1 ate 9 faca //da primeira até a penultima posição (já que a penultima compara com a última)
          inicio
          se (X[i] < X[i+1]) então //se posição atual é MENOR que a posição posterior
             inicio //faz a permuta deles
             flag<-1 //marca como "houve troca"
             aux<-X[i]
             X[i]<-X[i+1]
             X[i+1]<-aux
             fim_se
          fim_para
       n<-n+1 //atualiza o contador que controla a posição do vetor
       fim_enquanto
    
    //ESTRUTURA PARA EXIBIR O RESULTADO
    para i<-1 até 10 faca //para exibir cada posição do vetor ordenado
       escreva(X[i])
    fim_algoritmo

     

    Resumindo:

    É uma espécie de Bubble Sort (otimizada), que ordenará o vetor em ordem DECRESCENTE.   (1-ler os números para preencher o vetor. 2-ordena o vetor em ordem decrescente 3-exibe o vetor ordenado)

     

     

    Código em VisuAlg

    
    algoritmo "questão concurso"
    var
      X :vetor [1..10] de inteiro //declara as variáves
      n, i, aux, flag :inteiro
      
    INICIO
    ALEATORIO ON //comando para gerar números automaticamente (para ler pelo teclado, remova essa linha e a outra mais abaixo)
    para i de 1 ate 10 faca
       leia(X[i])
    fimPara
    ALEATORIO OFF
    
    n<-1
    flag<-1
    enquanto (n<=10) E (flag=1) faca
       flag<-0
       para i de 1 ate 9 faca
          se (X[i] < X[i+1]) então
             flag<-1
             aux<-X[i]
             X[i]<-X[i+1]
             X[i+1]<-aux
          fimSe
       fimPara
    n<-n+1
    fimEnquanto
       
    para i de 1 ate 10 faca //para exibir cada posição do vetor ordenado
       escreva(X[i])
    fimPara
    fimAlgoritmo

     

    PS: download do VisuAlg:
    http://antonionicolodi.blogspot.com.br/2015/06/visualg-30-revisao-4-em-25062015.html

     

     

    No aguardo.

    ele disse que é inserção professor é doido man na verdade só queria saber mesmo o funcionamento dele ajudou bastante man 

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Olá @anonymouatour.

     

    Quem sou eu para discordar..., mas para mim está mais para Bubble Sort, entendo assim:

     

    Em 05/06/2017 às 07:56, Simon Viegas disse:
    
    n<-1
    flag<-1
    enquanto (n<=10) E (flag=1) faca
       flag<-0
       para i de 1 ate 9 faca
          se (X[i] < X[i+1]) então
             flag<-1
             aux<-X[i]
             X[i]<-X[i+1]
             X[i+1]<-aux
          fimSe
       fimPara
       n<-n+1
    fimEnquanto

     

    A cada loop do laço externo o menor (por que usou "<") valor irá "flutuar como uma BOLHA" para o fim do vetor. Vai sendo comparado de dois em dois ("posição atual com a posição posterior"), daí, o menor entre eles ficará a direita, e o menor a esquerda (troca quando necessário)... no final, por consequência, o menor valor de todos estará na extrema direita (pois a cada comparação, o menor ficará a direita, e como é comparada com o próximo, continuará ficando a direita até chegar na última posição).

     

    Pelo que eu entendi também, esse algoritmo está incompleto (para não dizer falho), pois como a cada loop as últimas posições ficaram ordenadas, não fará mais sentido continuar comparando lá... ou seja, após o primeiro loop, a último posição estará ordenada, na próxima a penúltima, na próxima a antepenúltima... já no código do jeito que está, ele continuará comparando (sem necessidade) essas posições que já estão ordenadas!

     

     

    Já no Insert Sort, pelo que eu entendi, a cada loop, é selecionado uma posição (seu valor), e vai verificando e "empurrando os valores para o lado" para assim INSERIR, esse valor selecionado, na posição específica.

     

    RESUMINDO:

    Tomando-se como base uma ordenação em ordem decrescente:

     

    No Bubble Sort, os menores flutuam como uma bolha para o fim a cada loop. O foco aqui é flutuar como uma bolha os menores valores para o fim.

    Bubble-sort-example-300px.gif

     

     

    No Insert Sort, a cada posição do vetor, todas as posições anteriores e que são menores que ele (posição atual) são "jogados" para direita, após isso, a posição atual é inserida na posição que sobrou (última a ser jogada para direita), ou seja, a base lógica aqui é ir inserindo as maiores posições a esquerda.

     

    Insertion-sort-example-300px.gif

     

     

    Para mim, o código que foi postado se assemelha ao Bubble Sort!

     

     

    Mas a depender, qualquer coisa peça para explicar o funcionamento e qual seria a justificativa para ser o Insert... ou qualquer outra coisa pertinente.

     

    No aguardo.

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×