-
Posts
3.940 -
Cadastrado em
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Simon Viegas postou
-
Não estaria executando qual função? Qual erro está ocorrendo? Foque nisso: para tentar corrigir um problema, seria necessário saber qual seria o problema. Vou tentar analisar todo o código de um modo geral (mas o mais coerente seria você entender e especificar o problema)... vamos lá: se a função foi definida para retornar um char, você precisaria retornar um char. De qualquer forma, se é "um caractere qualquer" então não precisa ser um vetor mesmo. Utilize "um caractere". Ex.: char c() { char caractere; printf("Digite um caractere: "); scanf("%c", &caractere); return caractere; } Mude também o no para não ser um vetor. (Da mesma forma, a função retorna um char. A variável que vai receber também deveria ser um char.) para imprimir o caractere, utilize "%c" em vez de "%s". (Já que é apenas um caractere....) Sobre: @Um mero usuário, para a "condição de execução do for " você alterou para "==". Daí só iria "entrar no for" se m e n forem iguais a 1... o que estaria incorreto para o contexto. O código do @907467, que está utilizando "<=", já estaria correto... "precisa continuar loopeando enquanto m e n forem, respectivamente, menores ou iguais a i e j", ou seja: percorrendo o que seria cada linha e coluna da matriz.
-
VisualG Implementação de pilha Visualg
Simon Viegas respondeu ao tópico de pablopccosta em Programação - iniciantes
Adiantando algumas coisas: 1# Faltou declarar a variável topo var pilha: vetor[0..9] de caractere topo: inteiro op: inteiro 2# Faltou implementar função Cheia() //Retorna VERDADEIRO se a pilha estiver cheia ou FALSO caso contrário funcao Cheia(topo: inteiro): logico inicio se topo = 10 entao retorne VERDADEIRO senao retorne FALSO fimSe fimFuncao 3# Utilizar passagem por referência quando a variável pode ser alterada nos métodos (função ou procedimento) Para empilhar, precisa do [1] vetor, da [2] posição do topo e do [3] elemento a ser inserido, correto? O vetor é acessado diretamente pelo escopo global (pois o VisualG não aceita vetores por parâmetro); O elemento a ser inserido você decidiu que seria lido dentro da função, e assim está sendo feito (acho que isso precisa ser repensado); Já a posição do topo vem de fora... daí sendo recebido por parâmetro... só que, por padrão, as variáveis são passadas por valor, ou seja: essa variável que está na assinatura vai receber uma "cópia do valor que foi passado ao chamar esse procedimento". Daí, é necessário configurar para passar por referência, ou seja: ao alterar a variável do parâmetro, vai alterar diretamente a própria variável que foi utilizada ao chamar o procedimento. Basta colocar um var antes do parâmetro, veja: //Adiciona um elemento no topo da pilha procedimento Empilhar(var topo: inteiro) var letra: caractere inicio se Cheia(topo) entao escreval(" Pilha cheia!") senao escreva (" Digite a letra que deseja empilhar: ") leia(letra) pilha[topo] <- letra topo <- topo + 1 fimSe fimProcedimento //Remove e retorna um elemento do topo da pilha funcao Desempilhar(var topo: inteiro): caractere var elemento: caractere inicio se Vazia(topo) entao escreva(" Não há valor para desempilhar!") senao elemento <- pilha[topo-1] topo <- topo-1 retorne elemento fimSe fimFuncao Perceba que para as outra funções não precisa desse var, já que basta o "valor" da variável. Veja: a variável topo declarada aí nas funções NÃO é a mesma da variável topo global. São variáveis distintas... ela apenas tem o mesmo nome... (mais acima eu já comentei que pode utilizar outro nome sem problema). Ficar com o mesmo nome foi a pena por conveniência. Se não colocar esse var, as alterações na variável topo (dentro da função) são serão persistidas na variável topo (global). Simplesmente não vai conseguir cadastrar. #4 Por fim só corrigir as chamadas dos métodos inicio 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) limpaTela() escolha op caso 1 Empilhar(topo) caso 2 escreval(Desempilhar(topo)) caso 3 Limpar(topo) caso 4 Listar(topo) caso 5 escreval(Vazia(topo)) fimEscolha fimEnquanto fimAlgoritmo *** Com isso meio que corrige os principais pontos. Faça os ajustes e poste o código completo, assim como o enunciado da questão. Adiantando algumas coisas: 1# Faltou declarar a variável topo var pilha: vetor[0..9] de caractere topo: inteiro op: inteiro 2# Faltou implementar função Cheia() //Retorna VERDADEIRO se a pilha estiver cheia ou FALSO caso contrário funcao Cheia(topo: inteiro): logico inicio se topo = 10 entao retorne VERDADEIRO senao retorne FALSO fimSe fimFuncao 3# Utilizar passagem por referência quando a variável pode ser alterada nos métodos (função ou procedimento) Para empilhar, precisa do [1] vetor, da [2] posição do topo e do [3] elemento a ser inserido, correto? O vetor é acessado diretamente pelo escopo global (pois o VisualG não aceita vetores por parâmetro); O elemento a ser inserido você decidiu que seria lido dentro da função, e assim está sendo feito (acho que isso precisa ser repensado); Já a posição do topo vem de fora... daí sendo recebido por parâmetro... só que, por padrão, as variáveis são passadas por valor, ou seja: essa variável que está na assinatura vai receber uma "cópia do valor que foi passado ao chamar esse procedimento". Daí, é necessário configurar para passar por referência, ou seja: ao alterar a variável do parâmetro, vai alterar diretamente a própria variável que foi utilizada ao chamar o procedimento. Basta colocar um var antes do parâmetro, veja: //Adiciona um elemento no topo da pilha procedimento Empilhar(var topo: inteiro) var letra: caractere inicio se Cheia(topo) entao escreval(" Pilha cheia!") senao escreva (" Digite a letra que deseja empilhar: ") leia(letra) pilha[topo] <- letra topo <- topo + 1 fimSe fimProcedimento //Remove e retorna um elemento do topo da pilha funcao Desempilhar(var topo: inteiro): caractere var elemento: caractere inicio se Vazia(topo) entao escreva(" Não há valor para desempilhar!") senao elemento <- pilha[topo-1] topo <- topo-1 retorne elemento fimSe fimFuncao Perceba que para as outra funções não precisa desse var, já que basta o "valor" da variável. Veja: a variável topo declarada aí nas funções NÃO é a mesma da variável topo global. São variáveis distintas... ela apenas tem o mesmo nome... (mais acima eu já comentei que pode utilizar outro nome sem problema). Ficar com o mesmo nome foi a pena por conveniência. Se não colocar esse var, as alterações na variável topo (dentro da função) são serão persistidas na variável topo (global). Simplesmente não vai conseguir cadastrar. #4 Por fim só corrigir as chamadas dos métodos inicio 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) limpaTela() escolha op caso 1 Empilhar(topo) caso 2 escreval(Desempilhar(topo)) caso 3 Limpar(topo) caso 4 Listar(topo) caso 5 escreval(Vazia(topo)) fimEscolha fimEnquanto fimAlgoritmo *** Com isso meio que corrige os principais pontos. Faça os ajustes e poste o código completo, assim como o enunciado da questão. -
VisualG Implementação de pilha Visualg
Simon Viegas respondeu ao tópico de pablopccosta em Programação - iniciantes
Quais erros está ocorrendo? -
VisualG Estudo de Caso - Faça a Leitura de 60 Idades e Agrupe em três faixas etárias
Simon Viegas respondeu ao tópico de Bruno Condado em Programação - iniciantes
@Bruno Condado, acho que ficou muito bom. Se surgir para você outras ideias, tente implementar... Tente imaginar um resultado desejado primeiro, ou seja: primeiro idealize o problema, para a partir daí tentar idealizar uma solução para ele. Para o problema que atual, a sua solução me parece boa! -
VisualG Estudo de Caso - Faça a Leitura de 60 Idades e Agrupe em três faixas etárias
Simon Viegas respondeu ao tópico de Bruno Condado em Programação - iniciantes
Essa é ideia... vai alterando e testado até ficar de uma forma interessante. Quando tiver com um problema semelhante já terá uma base melhor e "perderá" menos tempo achando uma solução. -
VisualG Estudo de Caso - Faça a Leitura de 60 Idades e Agrupe em três faixas etárias
Simon Viegas respondeu ao tópico de Bruno Condado em Programação - iniciantes
Sim tem. Tente entende como você quer imprimir o resultado e crie um algoritmo para imprimir dessa forma desejada... Vá tentando e testando... -
VisualG Estudo de Caso - Faça a Leitura de 60 Idades e Agrupe em três faixas etárias
Simon Viegas respondeu ao tópico de Bruno Condado em Programação - iniciantes
Olá. Cada vetor tem o seu próprio "contador". Bastaria utilizar. Algo como: se (idades[cont] >= 0) e (idades[cont] < 18) entao CM <- CM + 1 menores[CM] <- idades[cont] fimSe escreva ("Menores: ") para cont <- 1 ate CM faca escreva (menores[cont],", ") fimSe fimPara -
Portugol Exercicio em Portugol Studio
Simon Viegas respondeu ao tópico de lopesqn em Programação - iniciantes
Caro usuário, Seja bem-vindo ao 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 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 -
VisualG Estudo de Caso - Faça a Leitura de 60 Idades e Agrupe em três faixas etárias
Simon Viegas respondeu ao tópico de Bruno Condado em Programação - iniciantes
@Bruno Condado, em vez de utilizar cont, utilize o "contador específico da categoria"... Por exemplo: use menores[CM] para menores. Por aí vai. -
VisualG Erro em algoritmo de vetor no VisualG
Simon Viegas respondeu ao tópico de Wicos em Programação - iniciantes
@Bruno Condado, demanda sendo acompanhada aqui: -
VisualG Implementação de pilha Visualg
Simon Viegas respondeu ao tópico de pablopccosta em Programação - iniciantes
@pablopccosta, fala aí os ajustes e poste o código completo para poder ser analisado e também, eventualmente, poder servi de base para outros visitantes. -
VisualG Implementação de pilha Visualg
Simon Viegas respondeu ao tópico de pablopccosta em Programação - iniciantes
@pablopccosta, vamos lá: Sobre: Sim... mas o papel principal desses funções é proteger o acesso ao vetor... para não deixar o programa tentar acessar uma posição que não existe! Exibir uma mensagem na tela seria apenas uma complementação. O cerne é não deixar o programa dar pau! (Vazio() é para não deixar remover de uma posição que não existe, ou seja: antes do 0. E Cheia() seria para não deixar inserir numa posição após a última, ou seja: depois do 9. Sobre: A ideia estaria certa, só que em vez de criar uma expressão para os se, o mais correto seria utilizar a função que já existe... a final, as funções correspondentes foram feitas justamente para serem utilizadas para esse fim!!! Segue um exemplo de como poderia usar: //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 Percebe? A forma de como verifica se está vazio fica "abstraído" para dentro da função. Observe que a informação de onde é o "início" (o topo) da pilha está vindo pelo parâmetro... lá na minha postagem anterior eu esqueci de fazer isso. Foi mal!, lá no outro código estou acessando o valor pela variável global... o que não é desejável, pelo menos no sentido do que foi proposto. Veja: Daí, como essa função passou a ter um parâmetro, na hora de invocar ela é preciso passar o valor que a função exige, no caso "um inteiro", que no contexto é o valor do índice, que por sua vez está em topo. ADENDO: Não precisa ter o mesmo nome!!! Poderia ser assim: //Lista todos os elementos armazenados na pilha procedimento Listar(t: inteiro) var i: inteiro inicio se Vazia(t) entao escreval("Pilha vazia!") senao para i de topo ate 0 passo -1 faca escreval(pilha[i]) fimPara fimSe fimProcedimento Daí, na hora de chamar o Listar() lá no menu, continuaria do mesmo jeito. caso 4 limpaTela() Listar(topo) As funções e procedimentos devem ser invocados de acordo com as suas assinaturas... se lá está recebendo um inteiro, entrem precisa passar um inteiro... no contexto, o inteiro que precisa está na variável topo. Deu para entender? Para listar, é precisa de 2 coisas: o vetor e a posição que representa o topo da pilha. Tanto o vetor, tanto essa posição precisaria ser passado por parâmetro, já que, como "sugerido", não queremos usar variáveis globais dentro de uma função, ou seja: "ou o valor vem por parâmetro, ou a variável é criada dentro da função". O problema é que VisualG não aceita vetores por parâmetros, daí, os vetores ficam como uma exceção, mas o índice "deveria" passar mesmo. Sobre: Que erro? Eu até já descobri aqui... veja qual erro está dando... dica: a posição 10 não existe para o seu vetor. O que está errado lá no meu código de listar? Sobre: De um modo geral, seria meio que bug do VisualG... que por sua vez seria "estimulado" por um erro de sintaxe no código. Basicamente seria isso: Vamos tomar por exemplo o código abaixo: //Retorna VERDADEIRO se a pilha estiver vazia ou FALSO caso contrário funcao Vazia(topo: inteiro): logico inicio se topo = 0 entao retorne VERDADEIRO senao retorne FALSO fimSe fimFuncao Como Vazia() precisa de uma parâmetro, necessariamente é preciso invocar utilizando um parâmetro. Exemplo: procedimento Listar(t: inteiro) var i: inteiro inicio se Vazia(t) entao //<-- aqui está invocando Vazia() passando um inteiro escreval("Pilha vazia!") Dá mesma forma que o Listar() deve ser invocado com um tipo de valor correto... no caso, Listar(topo). Agora, se tentar chamar a função assim: procedimento Listar(t: inteiro) var i: inteiro inicio se Vazia() entao //Aqui uma bomba preste a explodir!!! escreval("Pilha vazia!") Num "compilador" mais avançado, o código nem ia ser compilado!!! Mas aqui no VisualG o bagulho roda e acaba dando uns erros sinistros, rs. Mas o que precisamos focar aqui é na essência... toda vez que você for utilizar uma função, ela deve ser invocada passando necessariamente os parâmetros que ela exige. É isso. No seu código, o Vazia() já está exigindo um parâmetro, logo lá no seu menu deve invocar com o parâmetro correto, algo como Vazia(topo). -
Python Fatorial de 3 números aleatórios de no máximo 2 dígitos
Simon Viegas respondeu ao tópico de DEVlL em Programação - outros
@DEVlL, também não entendi. Se for uma limitação de multiplicações na hora de calcular o fatorial, para mim não faria sentido... já que, se for limitar, deixar de encontrar o fatorial... estou sem saber do que se trata também... Sugiro que faça logo apenas essa trecho: E poste o código completo aqui. Depois vai tentando descobrir o que seria a outra parte... (Aí você vai apenas "editar" a primeira parte.) -
Python Fatorial de 3 números aleatórios de no máximo 2 dígitos
Simon Viegas respondeu ao tópico de DEVlL em Programação - outros
@DEVlL, está com dúvidas em qual parte? Já sabe o que é um fatorial? -
VisualG alguém pode me ajudar com esses dois exercícios? (Pseudocódigo)
Simon Viegas respondeu ao tópico de joao vansan em Programação - iniciantes
Sim... mas você precisa seguir a sintaxe do VisualG.... -
VisualG alguém pode me ajudar com esses dois exercícios? (Pseudocódigo)
Simon Viegas respondeu ao tópico de joao vansan em Programação - iniciantes
Aí deixo com você... dá uma pesquisada nos seus "materiais de estudos"... e também umas pesquisadas na internet.. Esse é objetivo dos exercícios. Após, tente fazer o código e poste aqui. No aguardo. -
VisualG alguém pode me ajudar com esses dois exercícios? (Pseudocódigo)
Simon Viegas respondeu ao tópico de joao vansan em Programação - iniciantes
Você pode utilizar um para/faça indo de n até até 100... a cada loop imprimir o valor do índice. -
VisualG alguém pode me ajudar com esses dois exercícios? (Pseudocódigo)
Simon Viegas respondeu ao tópico de joao vansan em Programação - iniciantes
@joao vansan, poste o código que já conseguiu e onde está com dúvida. Um exemplo de esqueleto inicial: algoritmo "Exérciio 01" // Disciplina : // Professor : // Descrição : // Autor(a) : Joao Vansan // Data atual : 31/03/2021 var valorQualquer: inteiro inicio escreval("Informe um valor qualquer") leia(valorQualquer) fimAlgoritmo -
C Erro de execução no programinha em C
Simon Viegas respondeu ao tópico de DanielTenCaten em C/C#/C++
@DanielTenCaten, você declarou a função main duas vezes. -
VisualG Implementação de pilha Visualg
Simon Viegas respondeu ao tópico de pablopccosta em Programação - iniciantes
Olá. 1# Uso incorreto de parâmetro + coerência entre texto e nomenclatura de variável Sobre: A dica continua: como não está recebendo nada pelo parâmetro, não tem porque ter parâmetro. Além disse o texto continuou com "letra". Poderia ficar algo como: //Adiciona um elemento no topo da pilha procedimento Empilhar() var nome: caractere inicio escreval(" Digite a nome que deseja empilhar:") leia(nome) pilha[topo] <- nome topo <- topo + 1 fimProcedimento caso 1 LimpaTela() Empilhar() 2# Lista apenas o que precisa listar Sobre: Você está sempre listando todo o vetor, o que não há necessidade. Outro ponto é que está utilizando a variável nome, que não tem qualquer relação com esse procedimento. Vide "orientação/sugestão": Perceba que só de "absorver" esse conceito já dá para perceber que essa variável nome não deveria ser usado lá. Segue um exemplo de como poderia ficar: //Lista todos os elementos armazenados na pilha procedimento Listar() var i: inteiro inicio para i de topo ate 0 passo -1 faca escreval(pilha[i]) fimPara fimProcedimento Observe que é uma pilha... logo faz mais sentido exibir a lista de baixo para cima... "como uma pilha", por isso impresso de modo inverso (aparecer na tela corretamente). Ex.: 3# Sobre a definição e uso do Vazia() Segue uma simplificação da função: //Retorna VERDADEIRO se a pilha estiver vazia ou FALSO caso contrário funcao Vazia(topo: inteiro): logico inicio se topo = 0 entao retorne VERDADEIRO senao retorne FALSO fimSe fimFuncao *** Lá antes de desempilhar, você precisa antes verificar se a pilha não está vazia. Da mesma forma, seria necessário criar uma função para verificar se está cheia, para antes de empilhar! Efetue as correções e poste o código completo. Caso tenha tenha em alguma parte é só falar. -
Java Erro aparentemente simples, ou não kk - Missing Return Statement "}"
Simon Viegas respondeu ao tópico de Victor Hugo Barbosa Silva em Java/Android SDK
-
C++ Código C++ para pegar as notas dos alunos, idade e matrícula
Simon Viegas respondeu ao tópico de rafael carvalho melo em C/C#/C++
Caro usuário, Seja bem-vindo ao 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 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 -
VisualG Implementação de pilha Visualg
Simon Viegas respondeu ao tópico de pablopccosta em Programação - iniciantes
@pablopccosta, vamos lá: 1# Declaração das variáveis Declare logo tudo lá em baixo... Exemplo: var pilha: vetor[0..9] de caractere contNum: inteiro topo: inteiro op: inteiro nome: caractere inicio enquanto op <> 6 faca escreval("") escreval("-----------*IMPLEMENTAÇÃO DE PILHA*------------") escreval("") 2# Estrutura das funções e procedimentos De um modo simplificado, a orientação/sugestão é que tudo que uma função ou procedimento vai precisar, OU ela vai receber por parâmetro, OU ela tem dentro dela mesma... como no VisualG não é possível passar por parâmetro um vetor (por uma limitação técnica), pode/deve usar a variável global mesmo (não tem outro jeito). Já as coisas que dá para passar precisaria ou passar ou criar dentro da função. Veja: Sobre: Aí você precisa se decidir: OU você recebe o nome de fora e usa a função apenas para adicionar à pilha; (que seria o ideal, mas pode ler dentro também) OU você você usa uma variável local (interna), lê a variável e, por fim, adiciona à pilha. Não faz sentido usar esse parâmetro e ao mesmo tempo "substituir" lá dentro, sacou? Para simplificar, por enquanto use assim mesmo: //Adiciona um elemento no topo da pilha procedimento Empilhar() var nome: caractere inicio escreval(" Digite o nome que deseja empilhar:") leia(nome) pilha[topo] <- nome topo <- topo + 1 fimProcedimento Obs.: se for "letra" mesmo, mude a variável e o texto para "letra"... o que não pode é a variável ter um nomenclatura e o texto se referir a outra coisa. O código precisa sempre manter uma coerência. 3# Problema para chamar a função Aqui eu também me bati para descobrir o que estava acontecendo, rs. Fiz alguns testes e consegui... Veja esse trecho: Por ser uma função, por um motivo obscuro, o VisualG precisa que o retorno seja necessariamente usado... eu não entendi o porquê, só sei que é assim. Pode fazer algo do tipo: caso 2 limpaTela() nome <- Desempilhar() ou assim: caso 2 limpaTela() escreval(Desempilhar()) O importante que o valor retornado pela função seja "coletado" por algo. Obs.: esse não é um comportamento comum. No Pascal, pai do VisualG, isso não ocorre! Seu código iria funcionar (nessa parte) normalmente. Em outras linguagens de programação a mesma coisa... "coletar" o retorno é geralmente facultativo.. aqui é preciso coletar, senão apresenta problemas a execução, como já visto (mas não deveria!). 4# Problema na função Desempilhar em si falta antes verificar se está vazio ou não; faltou atualizar o índice do vetor: topo <- topo - 1 Da mesma forma que ele é atualizado com é empilhada, só que decrementando. 5# Problema na função Vazia() Aqui você está verificando errado. O que especifica se uma pilhar está vazia ou não é o índice do vetor. Simplesmente você precisa verificar se o topo está igual ou não a 0 (ou algo do tipo). Daí, lembrar que lá no programa principal você necessariamente precisaria usar o retorno dessa função, ou seja: ela foi invocada para saber se a pilha está vazia ou não, correto? Daí precisa usar essa resposta... Essa função será usada lá para desempilhar, já que não pode deixar tentar desempilhar uma pilha vazia. Talvez nem seja preciso deixar essa função lá no vetor. Se for necessário, coloque para exibir uma mensagem de acordo com a resposta da função. ADENDO: lá em desempilhar, você nem precisa "apagar" o dado da posição.. isso é um trabalho desnecessário para o computador, basta atualizar o índice (topo). *** Veja ponto a ponto o que sugeri... um a um... vá sempre tentando entender o que está ocorrendo e está fazendo. Qualquer dúvida é só tentar novamente. Se não conseguir, tenta novamente... caso o problema persista, é só postar. No aguardo. -
VisualG Onde está o erro?
Simon Viegas respondeu ao tópico de luasocorromeajudem em Programação - iniciantes
@luasocorromeajudem, nada. Não precisa se desculpar... errinho bastante comum.. uma hora ou outra sempre acabamos cometendo, rs. Na maioria dos compiladores, o código nem iria rodar... iria dar algo como "tipo de dados incompatíveis" e iria apontar o erro... A diferença no VisualG é que ele não compila, mas sim "interpreta em execução". Aí não percebe que tem esse problema e acaba se comportando de modo estranho... Eu não sei dizer exatamente o que ocorre, mas tem coisa que ele deixa passar e aí só vamos percebendo pela experiência do dia a dia. -
Portugol Portugol-calcular numero ilimitado de idades e falar: media, maior e menor idade
Simon Viegas respondeu ao tópico de Vinicius Peter Nunes em Programação - iniciantes
@devair1010 , você digitou * em vez de + . Seria idade <- idade + 1 para "incrementar. @Vinicius Peter Nunes , apesar de também funcionar assim, talvez um conceito mais próximo seria o de "inicializar a variável". Se eventualmente a variável estivesse com -1, ao incrementar iria para 0, por exemplo. Então, por definição, quando uma variável acaba de ser criada, ela poderia estar com qualquer valor nela, pois os "copiladores" meio que costumam apenas reservar um espaço na memória, mas deixando os bits que já estavam lá... No VisualG (e no seu pai o Pascal) é um pouco diferente. Aqui, as variáveis globais são automaticamente zeradas, logo idade estará com 0, por isso que "nunca vai entrar no enquanto", pois 0 não será diferente do próprio 0. A expressão no enquanto será uma contradição (oposto de tautologia). Daí, uma solução alternativa seria usar: idade <- 1 //inicializando com qualquer valor diferente de 0 para assim entrar do enquanto As todos formas devem funcionar, mas existe essa diferença.
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