Ir ao conteúdo
  • Cadastre-se

VisualG Programa para armazenar o RG de 100 pessoas


Posts recomendados

  • Membro VIP

Olá @anonymouatour.

 

14 minutos atrás, anonymouatour disse:

funcao PesquisaSequencial(rg:inteiro):inteiro
  var
    retorna :inteiro
  inicio
  retorna<- -1
  para i de 1 ate (total-1) faca
    se(func[i] = rg ) então
      retorna <- i
    fimSe
  fimPara
  retorne retorna
  

 

 

1) Para que serve esse para no início? como ele funciona ou deveria funcionar?

 

 

 

 

 

 

 

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

no caso o rg como parametro seria o numero que eu digito para verificar se ele está no vetor
a var retorna ela vai recebe -1 esse -1 só será modificado caso encontre a posição
exemplo encontrei o valor do rg na posição 2 ai esse -1 passa a ser 2

ja o para é ate onde vai procurar o limite

ai ele vai comparar no se (func = rg seria o valor lá em cima q digitei no adicionar for igual ao 
ai o retorna <-i vai retorna a posição que está o valor caso tenha ai aquela explicação em cima o -1 passa a ser 2 um exemplo


 
 

adicionado 0 minutos depois

ai mais abaixo desse codigo deveria está retornando elemento encontrado ou não mas só fica no buscar elemento e n sai disso

adicionado 8 minutos depois

ai essepedaço é como se fosse o corpo do programa inicio e fim algoritmo

 

repita
   escreval("buscar eleento")
   leia(rg)
   elemento <- PesquisaSequencial(rg)
   se(elemento >0) então
   escreval("elemento",elemento)
   senao
   escreval("elemento n encontradokkk")
   fimse
   ate (elemento = -1)

 

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

amigo conseguir passar pra procedimento está funcionando mas quando chega no ultimo valor ele fica 0 n sei porque segue o codigo em procedimento usei o sentinela q no caso é o pesquisa sequencia q diz q valor ´pe encontrado ou n já esse acima só encontra a chave 

 

procedimento PesquisaSequencial()
var
rg:inteiro
i:inteiro
elemento:inteiro
inicio

i<- 1
func[3] <- rg
enquanto (rg <> func[i])faca
i<- i+1
fimenquanto
se (i<=2)então
escreva(i)
senao
escreva("n encontrado o valor")
fimse
repita
   escreval("buscar elemento")
   leia(rg)
   elemento <- rg
   se(elemento > 0) então
   escreval("elemento encontrado",elemento)
   senao
   escreval("elemento não encontradokkk")
   fimse
   ate (elemento = -1)
// Seção de Comandos, procedimento, funções, operadores, etc...


 // escreval("EM CONSTRUÇÃO")
  aguardarENTER
fimprocedimento

 

adicionado 27 minutos depois

revisei esse codigo continua mesma coisa achei q estava pegando mas ele tipo n ta ligando pro vetor eu posso digitar qualquer numero maior q vai dar elemento encontrado procedimento n ta dando certo como meu professor disse faz com funcao 

adicionado 28 minutos depois

no caso sem sentinela é melhor esse só foi outro caso caso eu queira colocar com sentinela 

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

  • Membro VIP

Olá.

 

procedimento PesquisaSequencial()
  var
    rg :inteiro
    i  :inteiro
    elemento:inteiro
  inicio
  i<- 1
  func[3] <- rg //qual o valor de RG nesse momento???
  enquanto (rg <> func[i]) faca
    i<-i+1
  fimEnquanto
  se (i<=2) então
    escreva(i)
  senao
    escreva("n encontrado o valor")
  fimse
  //se você está verificando no ENQUANTO acima, para que esse repita aqui???
  repita
    escreval("buscar elemento")
    leia(rg)
    elemento <- rg
    se(elemento > 0) então
      escreval("elemento encontrado",elemento)
    senao
      escreval("elemento não encontradokkk")
    fimse
  ate (elemento = -1)
  aguardarENTER
fimprocedimento

Favor responder as perguntas que estão no código.

 

No aguardo.

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

  • Membro VIP

Olá @anonymouatour.

 

Se você achou um código, você precisa primeiro entendê-lo, para só depois tentar usá-lo.

 

Tem duas opções:

1) entender COMO FUNCIONA a estrutura funcionada, analisar todo o algoritmo e assimilar o seu funcionamento;

Nesse caso, você analisaria linha a linha... tentar entender do o processo que foi usado no algoritmo.

 

2) apenas entender O QUÊ ELE FAZ, ou seja, sem se preocupar com o "como funciona", mas saber o que ele precisa e o que ele está resultando.

Por exemplo, COMO funcionar o leia() no VisualAlg? não sei, só sei o QUE ELE FAZ... recebe uma variável e ao final essa variável fica com o "texto" ou "número" que o usuário informou via teclado.

 

***

 

MINHA SUGESTÃO
Analise linha a linha do programa que está na imagem!!!!!! No  VisuAlg, vá pressionado F8 e acompanhando o fluxo do algoritmo.

 

Após, adapte o código no seu programa.

 

Veja PRIMEIRO ENTENDA O CÓDIGO, só depois passe para o seu. Caso surja dúvidas, posta aqui que analisamos.

 

 

 

 

 

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

vls conseguir fazer antes de você publicar as duas buscas . mandei para meu professor vê se esta de acordo com o que ele pediu mas funcionou perfeitamente, e obrigado pelas dicas está me ajudando mt de verdade, agora vou começar fazer os metodos de ordenação abs

adicionado 1 minuto depois

posto aqui assim q puder os metodos caso eu n consiga comprrender

adicionado 2 minutos depois

eu fiz o pesquisa de outra forma aproveitei e reutilizei um codigo na web q achei e o outro é identifico o binario mas fiz alteraçoes vou tentar melhorar eles amanha e já fazer esse ordenação logo 

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

procedimento zikadoido(n:inteiro)
var
   i, j, min, aux: inteiro
inicio
   para i de 1 ate n-1 faca
     min <- i
     para j de i+1 ate n-1 faca
          se func[j] < func[min] então
             min <- j
          fimse
     fimpara
     se min <> i então
        aux <- vet [i]
        func[i] <- func[min]
        func[min] <- aux
        fimse
   fimpara

ESCREVA("RG's ordenados: ")
PARA i:=1 ATE n-1 FACA
   ESCREVA(func[i])
FIMPARA

fimprocedimento
                     
                     

 

adicionado 0 minutos depois

n consigo  coplocar esse codigo pra funcionar ele seria o selection sort já fiz vários teste e nd me ajuda 

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

  • Membro VIP

Olá.

 

Acho que só esqueceu de trocar o vet[] por func[]...

 

 

 

Abaixo tento explicar mais ou menos como funciona o código. Veja os comentários:

procedimento SelectionSort()
//Basicamente o Selecion Sort vai ordenando posição a posição, ou seja,
//ele procura o menor valor e e troca pela posição atual (caso necessário)
//vai para próxima e repete o processo, até a penúltimo (o último já estará
//ordenado
  var
    i, j,   :inteiro
    min, aux:inteiro
  inicio
  //SLECIONAR O MENOR VALOR DO I PRA FRENTE
  para i de 1 ate total-1 faca //do primeiro ao penúltimo
    min <- i //menor valor igual a primeira posição do loop atual
    para j de i+1 ate total-1 faca //para indo do posterior ao atual até o último
      se func[j] < func[min] então //se posição atual é menor que o "menor atual"
        min<-j //menor passa ser o atual (em j)
      fimSe
    fimPara
  //final, o min terá posição do menor número!!! e i será a posição que está
  //sendo ordenada

    
  //SE O MENOR NÃO ESTÁ NO PRÓPRIO I (se no i estiver o menor, o mim=i)
  se min<>i então
    //faz a troca entre um e outro
    aux      <- func[i]  //copia o valor (pois será substituido abaixo)
    func[i]  <- func[min]//menor passa a ter o valor mínimo
    func[min]<- aux      //onte estava o mínimo, agora passa a ser o que estava em L
    //ou seja, no final, a posição i vai ter o menor valor (dele pra frente)
  fimSe
  fimPara
  escreva("RG's ordenados: ")
  para i:=1 ate total-1 faca
    escreva(func[i])
  fimPara
fimProcedimento


OBSERVAÇÃO:

Esse código é apenas uma demonstração... estude o método Selection Sort, tente entender por completo o seu funcionamento. Analise o código assim e adapte no seu código!

 

Após, poste o seu código completo até aqui! e onde está com dúvidas.

 

No aguardo.

 

 

 

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

bom eu ja conseguir fazer varios só falta apenas 1 q professor ira passar hj mas n tive tempo de organizar bem meu codigo devido a falta de tempo vou vê se posto aqui ele para você vê ao meu entender está funcionando normalmente só vai faltar outro metodo e o remover q estou com dificuldade de fazer tentei pegar um exemplo com função e passar para procedimento mas n conseguir e obgd pela ajuda estou conseguindo entender de vd abs

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

No caso só faltará um metodo e o excluir pra finalizar tentei organizar ele da maneira possível o codigo abaixo 

Algoritmo "PROGRAMINHA"
// Disciplina   : [Linguagem e Lógica de Programação]
// Professor    : Antonio Carlos Nicolodi
//Obs.: Alterado o total de 100 para 3, para assim facilitar os testes!
//Após, voltar para 100 (lembrar de ajustar o código para o novo valor).
var
   func    :vetor[1..3] de inteiro //armazena os RG dos funcionários

   total   :inteiro                //total de funcionários cadatados
   menu    :inteiro

   //usado no menu principal

procedimento aguardarENTER()
var
   aux :caractere //usado para auxiliar para "pausar antes de continuar"
inicio
   escreva ("Pressione ENTER para continuar")
   leia(aux) //leitura de variável apenas para aproveitar que precisa aguardar um ENTER
fimProcedimento

procedimento Adicionar()
inicio
   limpaTela
   se (total<=3) então
      escreval("ALGORITMO – PROGRAMA RG")
      escreval("ADICIONAR ELEMENTO")
      escreva ("RG [",total,"]:")
      leia(func[total])
      total<-total+1
   senao
      escreval("NÃO PODE MAIS CADASTRAR NENHUM FUNCIONÁRIO!")
      aguardarENTER
   fimSe
fimProcedimento

procedimento Pesquisar()
var
   subMenu :inteiro //usado no menu local
inicio
   limpaTela
   repita
      escreval(" ALGORITMO – PROGRAMA RG")
      escreval("PESQUISAR ELEMENTO")
      escreval("[1] Pesquisa Sequencial")
      escreval("[2] Pesquisar Binária")
      escreval("[0] Voltar")
      escreval("Opção:")
      leia(subMenu)
      escolha subMenu
      caso 1
         PesquisaSequencial()
      caso 2
         BuscaBinaria()
      fimEscolha
   ate (subMenu=0)
fimProcedimento


procedimento PesquisaSequencial()
var
   num: inteiro
inicio

   escreval ("Digite o RG para pesquisar :")
   leia(num)
   total <- 1
   enquanto (total < 3) e (func[total] <> num) faca
      total <- total + 1
   fimenquanto
   se func[total] = num então
      escreva ("O RG foi localizado na posição [", total,"]")
   senao
      escreva ("O RG Não foi encontrado!!")
   fimse
   escreval
   aguardarENTER
fimprocedimento

procedimento BuscaBinaria
Var pesq,comeco,final,meio:inteiro
   acha:logico
inicio
   escreva (" Digite o RG para pesquisar: ")
   leia (pesq)
   comeco <-1
   final <- 3
   acha <- falso
   enquanto (comeco <= final) E (acha= falso) FACA
      meio <- (comeco + final) div 2
      se (pesq = func[meio]) então
         acha<- verdadeiro
      senao
         se (pesq < func[meio]) então
            final <- meio - 1
         senao
            comeco <- meio + 1
         fimse
      fimse
   fimenquanto
   se func[meio] = pesq então
      escreva(pesq," O RG foi localizado na posição",meio)
   senao
      escreva(pesq," O RG Não foi encontrado!!")
   fimse
   escreval
   aguardarENTER
fimprocedimento


procedimento Ordenar()
var
   subMenus :inteiro //usado no menu local
inicio
   limpaTela
   repita
      escreval(" ALGORITMO – PROGRAMA RG")
      escreval("PESQUISAR ELEMENTO")
      escreval("[1] Método Bubblesort")
      escreval("[2] Método Inserção Direta")
       escreval("[3] Método Seleção Direta")
       escreval("[4] Metódo em construção")
      escreval("[0] Voltar")
      escreval("Opção:")
      leia(subMenus)
      escolha subMenus
      caso 1
         Bubblesort()
      caso 2
         Mude_lot()
      caso 3
        SelectionSort()
      caso 4
        ckick()
      fimEscolha
   ate (subMenus=0)
fimProcedimento

procedimento Bubblesort()
var
   I,J,AUX:INTEIRO
inicio

   PARA J:=3 ATE 1 PASSO -1 FACA
      PARA I:=1 ATE J-1  FACA
         SE (func[I] > func[I+1])então
            AUX <- func[I]
            func[I] <- func[I+1]
            func[I+1] <- AUX
         FIMSE
      FIMPARA
   FIMPARA

   ESCREVA("RG's ordenados: ")
   PARA I:=1 ATE 3 FACA
      ESCREVA(func[I])

   FIMPARA
fimprocedimento


procedimento Mude_lot()
var
   i, j, chave: inteiro
inicio
para j de 2 ate 3 faca
   chave <- func[j]
   i <- j-1
   enquanto ((i>0) e (func[i] > chave)) faca
      func[i+1] <- func[i]
      i <- i-1
   fimenquanto
   func[i+1] <- chave
fimpara
para i de 1  ate 3 faca
   escreval(func[i])
fimpara

fimprocedimento


procedimento SelectionSort()
//Basicamente o Selecion Sort vai ordenando posição a posição, ou seja,
//ele procura o menor valor e e troca pela posição atual (caso necessário)
//vai para próxima e repete o processo, até a penúltimo (o último já estará
//ordenado
  var
    i, j:inteiro
    min, aux:inteiro
  inicio
  //SLECIONAR O MENOR VALOR DO I PRA FRENTE
  para i de 1 ate total-1 faca //do primeiro ao penúltimo
    min <- i //menor valor igual a primeira posição do loop atual
    para j de i+1 ate total-1 faca //para indo do posterior ao atual até o último
      se func[j] < func[min] então //se posição atual é menor que o "menor atual"
        min<-j //menor passa ser o atual (em j)
      fimSe
    fimPara
  //final, o min terá posição do menor número!!! e i será a posição que está
  //sendo ordenada


  //SE O MENOR NÃO ESTÁ NO PRÓPRIO I (se no i estiver o menor, o mim=i)
  se min<>i então
    //faz a troca entre um e outro
    aux      <- func[i]  //copia o valor (pois será substituido abaixo)
    func[i]  <- func[min]//menor passa a ter o valor mínimo
    func[min]<- aux      //onte estava o mínimo, agora passa a ser o que estava em L
    //ou seja, no final, a posição i vai ter o menor valor (dele pra frente)
  fimSe
  fimPara
  escreva("RG's ordenados: ")
  para i:=1 ate total-1 faca
    escreva(func[i])
  fimPara
fimProcedimento

procedimento ckick()

fimprocedimento

{PROCEDIMENTO Excluir()
var opcao,modo:inteiro
inicio
se opcao=4 então
    escreval("Excluir dados RG:")
    leia(func[total])
   fimse



fimprocedimento }


procedimento Listar
var
   i :inteiro
inicio
   escreval ("LISTAR..........")
   para i de 1 ate (total-1) faca
      escreval("Cadastro",i," RG:",func[i])
   fimPara
   aguardarENTER
fimProcedimento

INICIO
   total<-1 //inicializa o total de cadastros
   repita
      limpaTela
      escreval("ALGORITOMO CADASTRANDO – PROGRAMA RG")
      escreval("[1] Adicionar                       ")
      escreval("[2] Pesquisar                       ")
      escreval("[3] Ordenar                         ")
      escreval("[4] Remover  (em breve)             ")
      escreval("[9] Listar   obs.: apenas para teste")
      escreval("[0] Sair                            ")
      escreval("")
      escreva ("Opção:")
      leia(menu)
      escolha menu
      caso 0
         escreval("Desconectado")
      caso 1
         Adicionar()
      caso 2
         Pesquisar()
      caso 3
         Ordenar() //em construção
      caso 4
         Excluir() //em construção
      caso 9
         Listar() //procedimento provisório. Utilizado para testes
      fimEscolha
   ate(menu=0)
fimAlgoritmo

 

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

tentei implementar esse procedimento excluir mas n mostra 


PROCEDIMENTO Excluir()

var

  procura: caractere
  achou  : logico
  apaga  : caractere
  //i:INTEIRO
inicio
  Limpatela
  Escreva("| Digite o RG que deseja excluir.: ")
  Leia(func[total])
  Escreval("|--------------------------------|")

  achou <- falso

  Para I de 1 ate 3 Faca
    Se (func[total] = total) então
      achou <- verdadeiro
      interrompa
    FimSe
  FimPara

  Se achou então
    Limpatela

    Escreval("|              Confirma a exclusão do registro abaixo?            ")
    Escreval("|-----------------------------------------------------------------")
    Escreval("| Cód......: ", func[total])
    Escreval("|----------------------------------------------------------------|")
    Escreva("| [S] Sim [N] Não]")
    Leia(apaga)

    Se (apaga = "S") então
      func[total] <- ""
      Limpatela

      Escreval("| Registro Excluído com Sucesso       |")
      Escreval("|----------------------------------------------------------------|")
    FimSe
  SeNao
    Limpatela

    Escreval("|  Nenhum Registro encontrado para Deleção   |")
    Escreval("|------------------------------|")
  FimSe

fimprocedimento

 

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

  • Membro VIP

Olá.

 

8 horas atrás, anonymouatour disse:

conseguir terminar man vls pelas dicas e ajuda 

Legal!

 

Em relação ao excluir, perceba que você apenas  "zerou" o RG. Daí, nas outras partes do código, precisaria verificar se os cadastros estão apagados ou não, ou seja, algo como "se func[i ] é diferente de '0'".

 

Caso deseje, poste seu código completo que poderíamos dar uma revisada e até passar outras sugestões para melhorias e/ou correções.

 

No aguardo.

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