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:  
Ana Leticia Montelo

Algoritmo visualg posição

Recommended Posts

Alguém me explica como coloca a posição do primeiro valor digitado caso ele seja o maior ou o menor? Por exemplo eu estou digitando de 1 ate 10 aí no final aparece que a posição do menor(1) é 0 e se eu digitar ao contrario (de 10 ate 1) aparece que a posição do maior (10) é 0. Por favor me ajuda alguém! É urgente !!!

algoritmo "maior e menor"
var
vet: vetor [1..10] de inteiro
N,MA,ME,contador,posma,posme,a:inteiro

procedimento lernumero()
inicio

para a de 1 ate 10 faca
escreva("Escreva o ",a,"º número: ")
leia(vet[a])
fimpara
fimprocedimento


procedimento comparar()
inicio
para a de 1 ate 10 faca

se (contador=0) então
ME <- vet[a]
MA <- vet[a]
fimse
se vet[a] > MA então
MA <- vet[a]
posma<-a
fimse
se vet[a] < ME então
ME <- vet[a]
posme<-a
fimse


contador<-contador+1

 fimpara


fimprocedimento

inicio
contador<-0
lernumero()
comparar()

escreval ("MAIOR:",MA," posição",posma)
escreval ("MENOR:",ME," posição",posme)

fimalgoritmo

 

Editado por Simon Viegas
Inserir tag CODE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Ana Leticia Montelo.

 

Perceba, qual variável está apresentando o valor errado? então, faltou inicializá-las (posma e posme), assim como foi feito com MA e ME.

 

 

 

 

PS: abaixo seu código identado (apenas alterei de "então" para "ENTÃO", para o VisuAlg não dar erro).

algoritmo "maior e menor"
var
   vet: vetor [1..10] de inteiro
   N,MA,ME,contador,posma,posme,a:inteiro

procedimento lernumero()
   inicio
   para a de 1 ate 10 faca
      escreva("Escreva o ",a,"º número: ")
      leia(vet[a])
   fimpara
fimprocedimento

procedimento comparar()
   inicio
   para a de 1 ate 10 faca
      se (contador=0) ENTÃO
         ME <- vet[a]
         MA <- vet[a]
      fimse
      se vet[a] > MA ENTÃO
         MA <- vet[a]
         posma<-a
      fimse
      se vet[a] < ME ENTÃO
         ME <- vet[a]
         posme<-a
      fimse
      contador<-contador+1
   fimpara
fimprocedimento

inicio
contador<-0
lernumero()
comparar()
escreval ("MAIOR:",MA," posição",posma)
escreval ("MENOR:",ME," posição",posme)
fimalgoritmo


 

No aguardo.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Obrigada! Muito obrigada!

    Eu o modifiquei e fiz assim:

     

    algoritmo "Questão 5"
    //Escrever um algoritmo que leia um vetor com 10 elementos inteiros e
    //determine o maior e o menor elementos deste vetor, bem como suas
    //posições. Estes valores devem ser escritos no algoritmo principal e
    //devem ser passados/recebidos pela função
    var
    vet: vetor [1..10] de inteiro
    contador,a,ma,me,posma,posme:inteiro
    
    procedimento lernumero():inteiro
    
    inicio
    para a de 1 ate 10 faca
    escreva("Escreva o ",a,"º número: ")
    leia(vet[a])
    fimpara
    fimprocedimento
    
    Procedimento comparar()
    inicio
    me<-vet[1]
    ma<-vet[1]
    posma<-1
    posme<-1
    para a de 2 ate 10 faca
         se me > vet[a] então
          me<- vet[a]
          posme<-a
         fimse
    fimpara
    
    para a de 2 ate 10 faca
         se ma < vet[a] então
          ma<- vet[a]
          posma<-a
         fimse
    fimpara
       escreval("O menor elemento do vetor é" , me, " e está na posição ",posme)
       escreval("O maior elemento do vetor é" , ma, " e está na posição ",posma)
    fimprocedimento
    
    inicio
     lernumero()
     comparar()
    
    fimalgoritmo

     

    Editado por Simon Viegas
    Ao postar um códgio, pressionar antes o "BOTÃO <>" na barra de ferramentas
    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Olá @Ana Leticia Montelo.

     

    Inicialmente, para facilitar a visualização do código, segue o seu código reidentado (usei espaçamento 3, sem tabulação inteligente):

    algoritmo "Questão 5"
    //Escrever um algoritmo que leia um vetor com 10 elementos inteiros e
    //determine o maior e o menor elementos deste vetor, bem como suas
    //posições. Estes valores devem ser escritos no algoritmo principal e
    //devem ser passados/recebidos pela função
    var
       vet: vetor [1..10] de inteiro
       contador,a,ma,me,posma,posme:inteiro
    
    procedimento lerNumero():inteiro
       inicio
       para a de 1 ate 10 faca
          escreva("Escreva o ",a,"º número: ")
          leia(vet[a])
       fimPara
    fimProcedimento
    
    Procedimento comparar()
       inicio
       me<-vet[1]
       ma<-vet[1]
       posma<-1
       posme<-1
       para a de 2 ate 10 faca
          se me > vet[a] então
             me<-vet[a]
             posme<-a
          fimSe
       fimPara
       para a de 2 ate 10 faca
          se ma < vet[a] então
             ma<-vet[a]
             posma<-a
          fimse
      fimPara
      escreval("O menor elemento do vetor é" , me, " e está na posição ",posme)
      escreval("O maior elemento do vetor é" , ma, " e está na posição ",posma)
    fimProcedimento
    
    INICIO
    lernumero()
    comparar()
    fimAlgoritmo


    Vamos lá:
    1) VERIFICAÇÃO DO MENOR E MAIOR

    Você está utilizando 2 for idênticos para fazer a mesma coisa, no entanto, poderia (diria que deve) fazer com o for só.

     

    2) USO "MELHOR" DAS VARIÁVEIS

    Que tal em vez de usar uma variável para armazenar o menor e maior, apenas utilizar a posição??? ou seja, se você já tem a posição, basta usar a posição no vetor!!!!! (apague ma e me e ajuste o código)

     

    2) CONDIÇÕES MUTUAMENTE EXCLUDENTES (deixe esse para depois do código pronto)

    Para essa parte, necessariamente tem que verificar o item 1...

    Resumidamente falando é que você deve usar SE/SENAO/SE, em vez de 2 SE isolados para verificar o menor e maior números. Se você ainda não estudou SE/SENÃO, pode deixar seu código sem ele, mas recomendo se adiantar, e se for o caso, ter 2 códigos...

     

    Explicadamente falando seria:
    Sempre que observo tento levantar essa questão... então, quando um ou mais eventos não podem ocorrer ao mesmo tempo, não faz sentido (lógico) continuar verificando o restante dos eventos quando um deles já ocorreu antes...

    Como assim? você pode perguntar... No caso, se um número for "maior que o maior", ele jamais será ao mesmo tempo "menor que o menor" (mesmo inicialmente, pois eles começam iguais), logo, se ele já é "maior...." não se faz necessário depois verificar se ele é "menor..." também... É uma incoerência lógica, entende? Do jeito que está, ele verificará se é maior, e mesmo atualizando, continua e verifica se é menor... mas não deveria ("perda de tempo").

    Vide por exemplo essa fonte (e se deseja, dá um Google):
    https://pt.wikipedia.org/wiki/Eventos_mutuamente_exclusivos


    Obs.: como disse, se não entender muito bem, não precisa ver isso agora... se quiser depois explico com mais calma.

    ***

    No aguardo.

    • Curtir 1

    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

    ×