Ir ao conteúdo

pablopccosta

Membro Júnior
  • Posts

    5
  • Cadastrado em

  • Última visita

Reputação

3
  1. Boa noite a todos! Desculpe a demora para responder Simon. Fiz acredito que todos os ajustes que você me orientou, está dando alguns erros ainda. Na variável global, só deixei o vetor e outra variável que seria usada no menu, de resto declarei nas locais mesmo. Esse código para mim está uma incógnita Algoritmo "Implementação de Pilha-PABLO" // Descrição : SA4 - Atividade 1 Implementação de Pilha // Autor(a) : Pablo // Data atual : 15/3/2021 //Empilhar (adiciona um elemento no topo da pilha); procedimento empilhar() var letra: caractere topo: inteiro inicio escreval(" Digite a letra que deseja empilhar:") leia(letra) se topo = 10 entao escreval(" Pilha cheia!") senao pilha[topo]:= letra topo:= topo + 1 fimse fimprocedimento //Desempilhar (remove e retorna um elemento do topo da pilha); funcao desempilhar(): caractere var elemento: caractere topo: inteiro inicio se topo = 0 entao escreva(" Não há valor para desempilhar!") senao elemento:= pilha[topo-1] pilha[topo-1]:= "" topo:= topo-1 retorne elemento fimse fimfuncao //Limpar (remove todos os elementos da pilha); procedimento limpar() var contNum: inteiro inicio para contNum de 0 ate 9 faca pilha[contNum]:= "" fimpara fimprocedimento //Listar (lista todos os elementos armazenados na pilha); procedimento listar(topo: inteiro) var i: inteiro inicio se vazia (topo) entao escreval("Pilha vazia!") senao para i de topo ate 0 passo -1 faca escreval(pilha[i]) fimPara fimSe fimProcedimento //Retorna VERDADEIRO se a pilha estiver vazia ou FALSO caso contrário funcao vazia(topo: inteiro): logico var topo: inteiro inicio se topo = 0 entao retorne VERDADEIRO senao retorne FALSO fimSe fimFuncao var pilha:vetor[0..9] de caractere op: inteiro inicio // Seção de Comandos, procedimento, funções, operadores, etc... enquanto op <> 6 faca escreval("") escreval("-----------IMPLEMENTAÇÃO DE PILHA------------") escreval("") escreval("°1 Empilhar") escreval("°2 Desempilhar") escreval("°3 Limpar") escreval("°4 Listar") escreval("°5 Vazia") escreval("") escreval(" 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(topo) caso 5 limpatela escreval (vazia(topo)) fimescolha fimenquanto Fimalgoritmo
  2. Perfeito amigo, compreendi. Usar uma função que já faz parte do algorítimo da coesão ao mesmo, além de ser uma boa prática e garantir que funcione corretamente. Mas está dando erro rs. O erro diz que esperava uma "," (vírgula) quando coloco dentro do parâmetro a variável. No menu o erro diz: Variável não encontrada. Cara, sinceramente acho que depois das suas explicações entendo que o visualg é limitado à algumas coisas. Acredito que ele seja usado pela sua didática, facilidade de compreensão. Mas esses erros sem causa justa atrapalha o entendimento.
  3. Boa noite Simon! Entendi a necessidade de implementar essas funções para me retornar um alert caso queira inserir um valor maior do que descrito no vetor e se caso tentar desempilhar uma pilha vazia para ambos não retornarem erro como tem acontecido. Não sei se estou verificando da forma certa, está faltando algo. Usei a função se, tanto para "empilhar" (se cheia) e para o "desempilhar" (se vazia), mas, quando a pilha fica cheia, me retorna a mensagem de "pilha cheia", em seguida coloco para listar e me retorna "erro". Se "pilha vazia", me retorna a mensagem de "pilha vazia" e em baixo a primeira letra inserida na pilha. (Isso ta me deixando maluco já). Eu encerro o programa e inicio novamente, se eu testar o "listar" para testar e em seguida o desempilhar, aparece a última letra inserida na pilha da execução anterior do programa, mesmo depois de eu ter encerrado e iniciado novamente. Imagino que seja algum erro. (print em anexo). A função "vazia" mudei conforme você orientou para simplificar mas está dando erro também. (print em anexo) tenho impressão de que quando desempilho uma letra, o espaço da variável fica lá ainda, como se a linha estivesse ali ainda. Acredito que a ideia seja: Após desempilhar uma letra, a última ainda na pilha deve ocupar o topo, ou seja, a posição 0 do vetor. O restante que orientou consegui implementar. Mudei as "variáveis globais" para o final do código; Criei uma "variável local" para a var letra, removendo-a do parâmetro do procedimento; Se puder continuar tirando essas minhas dúvidas te agradeço.
  4. Muito obrigado meu camarada, deu uma luz p resolver essa atividade. A respeito do "empilhar" escrevi conforme sua orientação, faz todo o sentido sua explicação. Declarei uma variável local "nome" para o procedimento "empilhar", porém, quando eu listava os valores, algumas letras apareciam repetidas (não entendi o por que) tive que voltar da forma antiga, chamando dentro também e usando a variável local. Imagino que seja um erro do VisualG mesmo. A respeito do "desempilhar" usei um escreval para chamar a função como você disse e deu certo! Para o "vazia" fiz da mesma forma colocando dentro do escreval. Deu certo também! Após sua explicação abriu meu entendimento p conseguir finalizar essa atividade, mano, estava embaçado, 3 semanas quebrando a cabeça com isso. Tive um problema na hora de "desempilhar". Não estava desempilhando o topo, mas mudei inicio elemento := pilha[topo-1] pilha[topo-1] := "" topo := topo-1 retorne elemento fimfuncao Eu estava usando o decremento no início, estava dando erro, reescrevi na terceira linha e deu certo. Agradeço pela força brother! Salvou nessa atividade. Forte abraço a todos! Algoritmo "Implementação de Pilha-PABLO" // Descrição : SA4 - Atividade 1 Implementação de Pilha // Autor(a) : Pablo // Data atual : 15/3/2021 Var // Seção de Declarações das variáveis pilha:vetor[0..9] de caractere contNum: inteiro //Empilhar (adiciona um elemento no topo da pilha); procedimento empilhar(nome:caractere) inicio escreval(" Digite a letra que deseja empilhar:") leia(nome) pilha[topo]:= nome topo:= topo + 1 fimprocedimento //Desempilhar (remove e retorna um elemento do topo da pilha); funcao desempilhar(): caractere var elemento: caractere inicio elemento:= pilha[topo-1] pilha[topo-1]:= "" topo:= topo-1 retorne elemento fimfuncao //Limpar (remove todos os elementos da pilha); procedimento limpar() var contNum: inteiro inicio para contNum de 0 ate 9 faca pilha[contNum]:= "" fimpara topo:= 0 fimprocedimento //Listar (lista todos os elementos armazenados na pilha); procedimento listar() var contNum: inteiro inicio contNum:= contNum + 1 para contNum de 0 ate 9 faca escreval(pilha[contNum]) escreval(nome) fimpara fimprocedimento //Vazia (retorna verdadeiro se a pilha estiver vazia, //falso caso contrário). funcao vazia(): logico var contNum: inteiro resp: logico inicio resp:= verdadeiro para contNum de 0 ate 9 faca se nao (pilha[contNum]= "") entao resp:= falso fimse fimpara retorne resp fimfuncao topo: inteiro op: inteiro nome: caractere inicio // Seção de Comandos, procedimento, funções, operadores, etc... enquanto op <> 6 faca escreval("") escreval("-----------*IMPLEMENTAÇÃO DE PILHA*------------") escreval("") escreval("°1 Empilhar") escreval("°2 Desempilhar") escreval("°3 Limpar") escreval("°4 Listar") escreval("°5 Vazia") escreval("") escreval(" 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
  5. Boa noite a todos! Sei que esse assunto é recorrente aqui, e a própria atividade também. Pesquisei por aqui, mas não encontrei uma atividade que seguisse a risca o que foi pedido. Estou tendo problemas com o menu dessa atividade. (Acredito que seja no menu.) Está empilhando, listando e limpando, porém não está desempilhando e vazia (valor lógico - verdadeiro ou falso). Verdadeiro se a lista estiver vazia ou falso se não estiver. Quando eu escolho a opção desempilhar e vazia retorna o seguinte erro: variável "..." não foi encontrada. Poderiam me ajudar a entender esse problema? Desde já grato galera! Código abaixo! Qualquer problema encontrado no código fora esses me falem por favor. Algoritmo "Implementação de Pilha-PC" // Descrição : SA4 - Atividade 1 Implementação de Pilha // Autor(a) : PC // Data atual : 15/3/2021 Var // Seção de Declarações das variáveis pilha:vetor[0..9] de caractere contNum: inteiro //Empilhar (adiciona um elemento no topo da pilha); procedimento empilhar(nome:caractere) inicio escreval(" Digite a letra que deseja empilhar:") leia(nome) pilha[topo]:= nome topo:= topo + 1 fimprocedimento //Desempilhar (remove e retorna um elemento do topo da pilha); funcao desempilhar(): caractere var elemento: caractere inicio elemento:= pilha[topo-1] pilha[topo-1]:= "" retorne elemento fimfuncao //Limpar (remove todos os elementos da pilha); procedimento limpar() var contNum: inteiro inicio para contNum de 0 ate 9 faca pilha[contNum]:= "" fimpara topo:= 0 fimprocedimento //Listar (lista todos os elementos armazenados na pilha); procedimento listar() var contNum: inteiro inicio contNum:= contNum + 1 para contNum de 0 ate 9 faca escreval(pilha[contNum]) escreval(nome) fimpara fimprocedimento //Vazia (retorna verdadeiro se a pilha estiver vazia, //falso caso contrário). funcao vazia(): logico var contNum: inteiro resp: logico inicio resp:= verdadeiro para contNum de 0 ate 9 faca se nao (pilha[contNum]= "") entao resp:= falso fimse fimpara retorne resp fimfuncao topo: inteiro op: inteiro nome: caractere inicio // Seção de Comandos, procedimento, funções, operadores, etc... enquanto op <> 6 faca escreval("") escreval("-----------*IMPLEMENTAÇÃO DE PILHA*------------") escreval("") escreval("°1 Empilhar") escreval("°2 Desempilhar") escreval("°3 Limpar") escreval("°4 Listar") escreval("°5 Vazia") escreval("") escreval(" Digite a opção desejada:") leia(op) escolha op caso 1 limpatela empilhar("") caso 2 limpatela desempilhar() caso 3 limpatela limpar() caso 4 limpatela listar() caso 5 limpatela vazia () fimescolha fimenquanto Fimalgoritmo

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!