Ir ao conteúdo

Posts recomendados

Postado

Boa tarde. Esse algoritmo tem uma fila de números, porém tenho que fazer para que ela comesse a armazenar nomes na fila, e não estou conseguindo se alguém puder ajudar fico agradecido!

 

Algoritmo "Fila de Nomes"

Var
   fila : vetor[0..4] de inteiro
   cont : inteiro
   opc: caractere
   entr: inteiro

procedimento enfileirar(numero : inteiro)
inicio // procedimento para adicionar valor na fila.
   se cont < 5 entao
      fila[cont] <- numero
      cont <- cont + 1
   senao
      escreval("ERRO! O limite da fila excedida!")
   fimse
fimprocedimento

procedimento desenf()
var
   i : inteiro
inicio // procedimento para remover todos os valores inseridos.

   se cont > 0 entao
      escreval(fila[0])
      para i de 1 ate 4 faca
         fila[i-1] <- fila[i]
      fimpara
      fila[4] <- 0

      cont <- cont - 1
   senao // retorna erro se a fila já estiver vazia.
      escreval("ERRO! A pilha esta vazia!")
   fimse
fimprocedimento

procedimento limpar()
var
   i : inteiro
inicio   // procedimento limpa todos os valores armazenados.
   i <- 0
   para i de 0 ate 4 faca
      fila[i] <- 0
   fimpara

   cont <- 0
fimprocedimento

procedimento listar()
var
   i : inteiro
inicio  // nesta etapa o programa imprime os valores enfileirados
   i <- 0
   para i de 0 ate 4 faca
      escreval(fila[i])
   fimpara
fimprocedimento

procedimento vazia()
inicio
   se cont = 0 entao
      escreval("Verdadeiro")// se a fila esta vazia então retorna verdadeiro.
   senao
      escreval("Falso") // se houver valor na fila ira retorna falso.
   fimse
fimprocedimento

procedimento imprimenu()
inicio   // Menu do programa
   limpatela
   escreval("")// precionando E, D, L,
   escreval("Bem vindo ao programa das Filas - FIFO ")
   escreval("---------------------------------------------")
   escreval("opções: ")
   escreval("E. Para Adicionar:........| D. Para Remover: ")
   escreval("L. Para Limpar:  ........| I. Para Listar: ")
   escreval("V. vazia     ........| X. Sair:     ")
   escreval("---------------------------------------------")
   escreva("Digite a opcao: ")
fimprocedimento

procedimento aguarda_usuario()
var
   n : inteiro
inicio
   escreval("")// oa executar uma função precione ENTER novamente,
   escreval("Pressione ENTER para continuar") //para prosseguir no menu.
   leia(n)
fimprocedimento

Inicio
   cont <- 0  // As opções abaixo chama os procedimentos.
   opc <- "0"

   enquanto opc <> "X" faca
      imprimenu()
      leia(opc)

      escolha opc
      caso "E"
         escreva("Digite um numero para adicionar a fila: ")
         leia(entr)
         enfileirar(entr)
         escreval("Numero adicionado a fila!")
         aguarda_usuario()
      caso "D"
         desenf()
         escreval("Removido da fila!")
         aguarda_usuario()
      caso "L"
         limpar()
         escreval("Fila limpa!")
         aguarda_usuario()
      caso "I"
         listar()
         escreval("A quantidade de intens enfileirado é de")
         aguarda_usuario()
      caso "V"
         escreva("A fila esta vazia: ")
         vazia()
         aguarda_usuario()
      fimescolha
   fimenquanto
fimalgoritmo

 

  • Curtir 1
Postado

Na verdade esse algoritmo cria uma fila onde consigo armazenar somente números, porém estão me pedindo aqui para que eu faça com que esse código possa armazenar uma fila de até 25 nomes, e não estou conseguindo fazer isto, já tentei de varias formas mas estou confuso.

  • Membro VIP
Postado
51 minutos atrás, Hydra_ disse:

Na verdade esse algoritmo cria uma fila onde consigo armazenar somente números [...]

 

OK. Isso eu entendi.

 

52 minutos atrás, Hydra_ disse:

[...] porém estão me pedindo aqui para que eu faça com que esse código possa armazenar uma fila de até 25 nomes, e não estou conseguindo fazer isto, já tentei de varias formas mas estou confuso.

 

Enunciado fornece o código e pede para você alterar ele? É isso?

 

@Hydra_, poste o texto completo do enunciado para entendermos melhor o que precisaria ser feito...

 

 

Mas em relação a alteração, altere o tipo do vetor, dos parâmetros das funções e o tipo da entrada de inteiro para caractere... é isso.

 

Primeiro entenda o código original. Tem alguma dúvida sobre ele? Qual?

Postado

Sim tenho 2 códigos para fazer isso porém um deles é esse que mandei ali em cima e o outro é esse que vou mandar agora, esse aqui que irei mandar ele é um algoritmo de Pilha porém funciona perfeitamente, seria possível fazer com que ele funcione como se fosse uma fila? Sou novato em programação estou ainda aprendendo.

Algoritmo "Alpha"

Var

   pilha:vetor[0..19] de caractere
   contNum: inteiro

procedimento empilhar(nome:caractere)
inicio
   escreval(" Digite o Nome:")
   leia(nome)
   pilha[topo]:= nome
   topo:= topo + 1

fimprocedimento

funcao desempilhar(): caractere
var
   elemento: caractere

inicio

   elemento:= pilha[topo-1]
   pilha[topo-1]:= ""
   topo:= topo-1
   retorne elemento

fimfuncao

procedimento limpar()
var
   contNum: inteiro

inicio
   para contNum de 0 ate 19 faca
      pilha[contNum]:= ""
   fimpara
   topo:= 0

fimprocedimento

procedimento listar()
var
   contNum: inteiro

inicio
   contNum:= contNum + 1
   para contNum de 0 ate 19 faca
      escreval(pilha[contNum])
      escreval(nome)
   fimpara

fimprocedimento

funcao vazia(): logico
var
   contNum: inteiro
   resp: logico

inicio
   resp:= verdadeiro
   para contNum de 0 ate 19 faca
      se não (pilha[contNum]= "") entao
         resp:= falso
      fimse
   fimpara

   retorne resp

fimfuncao

topo: inteiro
op: inteiro
nome: caractere
inicio

   enquanto op <> 6 faca
      escreval("------Bem-Vindo------")
      escreval("1-Empilhar")
      escreval("2-Desempilhar")
      escreval("3-Limpar")
      escreval("4-Listar")
      escreval("5-Vazia")
      escreval("6-Sair")
      escreval("")
      escreva("Digite a opção desejada:")
      leia(op)

      escolha op

      caso 1
         limpatela
         empilhar("")

      caso 2
         limpatela
         escreval(desempilhar())

      caso 3
         limpatela
         limpar()

      caso 4
         limpatela
         listar()

      caso 5
         limpatela
         escreval(vazia ())

      fimescolha
   fimenquanto

Fimalgoritmo

 

Postado

O primeiro algoritmo fornece um vetor do tipo inteiro com 5 espaços (lembrando que arrays começam do 0)

Você precisa alterar o tipo de dados de inteiro para caractere, e no lugar da variável numero, era bom você mudar pra nome, já que seu exercício pede para organizar uma fila com nomes e vai ser melhor pra você identificar o que você tá fazendo.

Depois você precisa atribuir os nomes como parâmetros do método enfileirar, que nesse algoritmo está como numero : inteiro

Postado

O primeiro não funciona de jeito nenhum, mas o segundo a única coisa que eu teria que mudar é pra ele funcionar igual uma fila, os nomes que eu digitar primeiro sair primeiro.

Postado

@Hydra_ Você precisa fazer as alterações necessárias antes de compilar o código. Como ficou teu método de enfileirar? Colocou todos os nomes como parâmetros e definiu um limite máximo pro vetor? Posta o código do primeiro programa pra gente ver como você alterou.

Postado

Desculpa mas o primeiro faz parte de outra atividade só me enganei, na verdade é o segundo que tenho que fazer com que ele remova da fileira como se fosse uma pilha, bem ai eu consegui fazer, porém também pede para que eu faça com que remova em forma de fila também, ai esta minha dificuldade.

funcao desempilhar(): caractere
var
   elemento: caractere
inicio
   elemento:= pilha[topo-1]
   pilha[topo-1]:= ""
   topo:= topo-1

   retorne elemento
fimfuncao

 

Essa função desempilha sem problemas, basta eu criar uma que remova como se fosse uma fila, mas não estou conseguindo.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!