-
Posts
3.940 -
Cadastrado em
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Simon Viegas postou
-
C Pilha no vetor estático com Linguagem C
Simon Viegas respondeu ao tópico de brunacamily em C/C#/C++
@brunacamily, sobre: Eu não entendi se isso seria apenas para abstrair, ou seja: "imaginar que teria implementado", ou se será necessário implementar de fato... Mas, de um modo geral, acho meio difícil responder isso de cabeça... pois envolveria alguns pormenores do C que, se já tivesse um bom conhecimento na linguagem, por si só não teria dúvidas sobre pilhas, concorda?. RESUMINDO Simplesmente implemente as funções push(), pop() e display() e vá testando e "tentando entender" como funciona as coisas em C... VERSÃO SNYDER CUT Supondo que isso estaria numa prova de concurso e precisaria responder de cabeça... vamos lá: Temos: Tá! Qual o valor inicial para as "itens" p.primeiro e p.ultimo ao apenas definir a variável p? Ficam com um lixo da memória ou ficam com 0, já que são int? Particularmente eu não sabia! Para mim ficaria com um valor "aleatório" ("lixo de memória")... mas testei aqui (compilando um .cpp) e ambas ficaram com 0. Ou seja: é um detalhe muito específico... talvez isso seja até configurável de compilador para compilador, vá saber... No Pascal, por exemplo, se for no "main", a variável é zerada (fica com 0), já se for dentro de uma função, não zera, fica com o lixo.. Tem linguagem que nem deixa compilar! ou seja: depende do "pormenor" lá da linguagem. Em fim, vamos aceitar aqui que é o padrão "zerar" os int. Seguindo, vamos "executar" a primeira linha do pop(): Vai então acessar a posição -1 do vetor, certo?... ora! o que acontece quando tenta acessar uma posição que "não existe" no vetor em C? Eu também não fazia ideia... do pouco que conheço em outras linguagem, daria pau!! O programa estouraria.... mas testei aqui e vi que simplesmente "roda".. e aí? O que acontece?... o jeito também é testar... (Usando display() seria um caminho. Vide mais abaixo.) Daí, pede para inserir novos itens. Vamos inserir o 3, 5 e o 7. Seguindo a mesma lógica "simples", vai primeiro empilhar na posição -1, depois na posição 0, depois na posição 1... certo? O que vai ser impresso? Então, o que o display() vai mostrar vai depender do que implementar lá... se implementar a "listagem" indo do "p.primeiro" (0) até o "p.ultimo" (1), vai imprimir 7 e 5 (ordem invertida, já que é uma pilha).. o 3 ficaria lá no limbo... Em fim, para testar, coloquei para imprimir da posição -1 (que não deveria existir no vetor, já que vai de 0 a 9) até o p.ultimo.. aí imprimiu o valor: Veja: Mas perceba que não faria muito sentido começar do -1... já que "item p.primeiro não foi mexido no pop()... Então, de algum modo o C "força" o acesso a uma posição do vetor que não existe (a posição -1). E o programa roda... isso provavelmente tem a ver com o modo que o C gerencia a memória de um modo mais "livre"... menos protegido nesse sentido. (O programador teria mais flexibilidade e ao mesmo tempo mais responsabilidade nesse gerenciamento.) Conclusão: Além dos métodos solicitados no enunciado, ficaria implícito que, para um gerenciamento de pilhas, seria "necessário" o uso de outras funções... como init(), para garantir uma inicialização da pilha ou ajudar a resetar; um empty(), para ver se está vazio antes, por exemplo, de tentar retirar um elemento; um full(), para verificar se está cheio antes, por exemplo, de tentar inserir mais dados que a pilha suportaria etc. Resumindo: Simplesmente implemente as funções push(), pop() e display() e vá testando e "tentando entender" como funciona as coisas em C... daí, vai tentando identificar a necessidade ou não da implementação de outras funções auxiliares. Sobre: 1 - iria "remover" um elemento que sequer foi empilhado; ("Ficaria meio que com um saldo negativo".); 2 - iria inserir os elementos nas posições -1, 0 e 1; 3 - iria exibir os 2 últimos elementos, mas em ordem invertida entre si. Mas reforçando: a forma que os resultados serão implementando, vai depender diretamente do que será implementado, já que as outras função não foram pré-definidas no enunciado, e nem o enunciado proíbe que o próprio pop() seja ajustado, para por exemplo, exibir "pilha vazia", em vez de "desempilhar algo que não existe", como relatado mais acima.. -
VisualG Programa para armazenar o RG de 100 usuários
Simon Viegas respondeu ao tópico de VIctor Raphael em Programação - iniciantes
Vamos lá: Sobre: O que teria a ver "func" com "RG"? Aqui já tem algo estranho... uma recomendação seria utilizar "nomenclaturas de variáveis sugestivas para o contexto delas". Que tal vetRG? Então, recomendaria refazer todo o código aos poucos... como já fez muita coisa, creio que não terá muita dificuldade com as partes já feitas... mas ao mesmo tempo servirá para revisar melhor... Por exemplo (seria só um exemplo mesmo, você pode ir ajustando da forma desejada) : Sobre: Algoritmo "Questão 1 - Cadastro de 100 RG" const //MAX = 100 MAX = 3 var vetRG: vetor[1..MAX] de inteiro total: inteiro menu : caractere procedimento aguardarENTER() var aux :caractere inicio escreva ("Pressione ENTER para continuar") leia(aux) fimProcedimento procedimento Adicionar() inicio limpaTela se (total <= MAX) entao total <- total+1 escreval("ALGORITMO – PROGRAMA RG") escreval("ADICIONAR ELEMENTO") escreva ("RG [", total:1, "]:") leia(vetRG[total]) senao escreval("NÃO PODE MAIS CADASTRAR NENHUM FUNCIONÁRIO!") escreval("Capacidade máxima (", MAX:1, ") atingida") escreval("") aguardarENTER() fimSe fimProcedimento inicio total <- 0 repita limpaTela escreval("Questão 1 - Programa RG UNICARIOCA ") escreval("[1] Adicionar ") escreval("[2] Pesquisar ") escreval("[3] Remover ") escreval("[0] Sair ") escreval("") escreva ("Opção:") leia(menu) escolha menu caso "0" escreval("Desconectado") caso "1" Adicionar() caso "2" //Pesquisar() caso "3" //Excluir() fimEscolha ate (menu = "0") fimAlgoritmo Parece que ficou mais ou menos correto... qualquer coisa revise... mas tente garantir que está funcionando bem. Daí, posteriormente tente: No seu código anterior, essa parte não está funcionando corretamente.. daí implemente APENAS essa pesquisa sequencial no seu novo código (que pode ser baseado nesse acima)... revisando bem até que esteja funcionando tudo certinho. Poste o código completo aqui até essa parte. Não tem fazer mais coisas! Caso tenha dúvidas, é só postar. Depois você decide se vai implementar o sequencial com sentinela ou excluir... mas isso só depois ter finalizado o adicionar e a pesquisa sequencial. Adendo: a base para excluir é parecida com a base de pesquisar... se pesquisar não está funcionando ainda, como vai iriamos tentar implementar o excluir? No aguardo. -
VisualG Programa para armazenar o RG de 100 usuários
Simon Viegas respondeu ao tópico de VIctor Raphael em Programação - iniciantes
@VIctor Raphael, certo. E qual a sua dúvida no momento? Está precisando de ajuda em qual trecho? -
VisualG Algoritmo em pseudocódigo!! resolver exercicio
Simon Viegas respondeu ao tópico de Igornascimento em Programação - iniciantes
Não, creio que o pesquisar também não funciona... tanto que até achei estava se referindo a ele... Sim... entendi agora. Você poderia fazer a verificação logo após ler o código lá no cadastro... a lógica para verificar se tem ou não um código cadastro seria análogo ao de pesquisar... a diferença é que, se encontrar, em vez de listar o dados no produto na tela, você poderia solicitar que ele insira outro código. Senão encontrar, não faz nada. Resumindo: - primeiro corrija o pesquisar. - utilize, praticamente, a mesma lógica para verificar se já existe um código cadastrado. -
VisualG Algoritmo em pseudocódigo!! resolver exercicio
Simon Viegas respondeu ao tópico de Igornascimento em Programação - iniciantes
O pesquisar pode ser análogo ao listar... veja: A diferença que em vez de listar todos, você só vai listar aquele que onde o código da pesquisa for igual ao código do produto... onde estaria o código do produto? Resposta: No aguardo. -
VisualG Contagem inteligente de um número
Simon Viegas respondeu ao tópico de Felipe_Fernandes em Programação - iniciantes
Seria bom postar o enunciado original completo... Para implementar uma solução, precisaria entender bem qual seria o problema.. Mas de um modo resumido... talvez meio que, primeiro lê o número, verifica qual "categoria" ele se encaixa e faz o que deveria fazer para a categoria identificada... algo como: - leia o num; - se num maior ou igual a 1 e menor ou igual a 4, então gere uma lista de 1 até num; - senão, se num igual a 5, então gere uma lista de num até 1 (passo -1); - senão, exibir uma mensagem de número inválido (ou algo do tipo). Tente sempre começar do mais simples pro mais complexo... não precisa, e nem deveria, tentar fazer tudo de uma vez. Por exemplo: algoritmo "Contagem Inteligente" // Disciplina: [Linguagem e Lógica de Programação] // Autor(a) : Felipe Fernandes dos Santos Nunes // Data atual: 26/05/2021 var cont, num: inteiro inicio escreval("Informe o valor do numero") leia(num) se (num >= 1) e (num <= 4) entao //aqui faz escrever na tela a lista de 1 até num (seguindo o enunciado) fimSe fimAlgoritmo Faça imprimir simplesmente de 1 a num. Esqueça que existe outra coisa... vá testando até ficar mais ou menos bom... após, inserir mais alguma coisa, como a questão da impressão de "5 a 1"... por aí vai. Remundindo: - dê continuidade ao código acima implementando a impressão da lista; - poste o enunciado completo; - poste a finalização dessa etapa; Caso tenha dúvidas, é só perguntar. Só após ter finalizado e postado aqui no fórum essa etapa, tenta fazer uma próxima.. (Após postar, já pode tentar ir fazendo mais alguma coisa, se terminar antes de alguém responder, você responde por baixo...) No aguardo. -
Criar um pequeno e-commerce de celulares
Simon Viegas respondeu ao tópico de clebson marcos em Programação - iniciantes
@clebson marcos, você precisa criar algo.. A minha sugestão é ir sempre fazendo ao poucos... nunca tentar fazer tudo de uma vez. Vou tentar adiantar um pouco... Espero que seja em VisualG, rs. Começa com um esqueleto: algoritmo "Venda de Celulares" // Disciplina : // Professor : // Descrição : // Autor(a) : Clebson Marcos // Data atual : 31/05/2021 //Base do enunciado //1 – Estrutura de Registro para armazenar 100 aparelhos celulares //2 – Um menu que apresente os seguintes módulos (procedimentos / funções) //2.1 – Cadastrar Produtos //2.2 – Listar todos (Aqui liste 3 características armazenadas) //2.3 - Listar 1 produto específico (Aqui liste 3 características armazenadas) // //Considere as seguintes regras: //1 - Controlar o cadastro para que não haja códigos idênticos. //2 - Informar ao usuário se produto foi cadastro ou não. //3 - Informar ao usuário que o produto não foi encontrado caso ocorra. var inicio fimAlgoritmo Daí, vai inserindo alguma coisa... só para ir testando e tendo ideias. Exemplo: var //dados do aparelho marca: caractere preco: real capacidadeGB: caractere inicio escreval("Dados do celular") escreva ("Marca: ") leia(marca) escreva ("Preço: R$ ") leia(preco) escreva ("Capacidade em GB: ") leia(capacidadeGB) escreval("") escreval("Marca: ", marca:1) escreval("Preço: R$ ", preco:1:2) escreval("Capacidade em GB: ", capacidadeGB:1) fimAlgoritmo Teste: Nesse esboço, está cadastrando um celular e logo após exibindo os dados na tela. Tente agora, por exemplo, criar um menu.. com a opção de cadastrar e outra para listar... não precisa fazer com procedimentos ou funções... faça algo mais simples mesmo... o que importante que vá conseguindo fazer rodar de boa e aos poucos vai "melhorando". No aguarod. -
VisualG Algoritmo em pseudocódigo!! resolver exercicio
Simon Viegas respondeu ao tópico de Igornascimento em Programação - iniciantes
@Igornascimento, sobre a pesquisa: Trecho do seu código: Nesse se você está apenas comparando a pesquisa com o codItem atual, ou seja: provavelmente apontando para o último cadastro. O que você precisaria fazer seria algo como. - ler o código da pesquisa; - e, para cada código ("i indo de 1 até codItem), efetuar a comparação. Daí vai ajustando... sugiro utilizar o comando enquanto. Está conseguindo fazer com registros? Qualquer dúvida é só postar. -
Portugol Algorititmo visualg (portugol) incorreto
Simon Viegas respondeu ao tópico de lucaszconner em Programação - iniciantes
@lucaszconner, seu código está muito bom... mas acho que talvez não esteja em direção ao que foi solicitado no enunciado. Levanto um ponto que costumo comentar: para resolver um problema, primeiro seria necessário entender o problema De um geral, é ponto que gostaria de reforçar... fazer isso seroa comum... mais comum do que o desejado... acontece o tempo tooodo, principalmente no dia a dia. Então, o que você entendeu do que é para ser feito? O que você está tentando fazer se encaixaria naquilo que você entendeu do que é para fazer? Aquilo que inicialmente entendeu se encaixa no que foi solicitado?. Entende onde quero chegar? Quando você diz: quando executado mostra a parte do escreval mais do que uma vez, não sei como resolver Ok!, a sua dúvida estaria em algo como "por quê está repetindo?". Certo? Mas acho que antes você deveria focar em algo como: "o que deveria ser impresso nesse programa?". Rodei o programa com valores aleatórios... O enunciado seria: E agora perceba (com a voz do Procópio): o que significaria "O número 4 se encontra na posição 1" em relação a esse enunciado acima? Tipo: "tá, como assim o número 4 está na posição 1? Isso quer dizer o quê? Não está tão claro esses resultados... Pense assim: usando da abstração, esqueça o VisualG . Esqueça que existe linguagens de programação... imagine que alguém te desse uma lista de 10 números e perguntasse: "quais as posições dos números repetidos?". Pode tentar aí... conseguiremos encontrar os repetidos de boa... mas como seria um bom formato de reposta? É nisso que estou propondo para focar. A lógica para resolver vem depois de entender o problema e ter uma base de como quer a resposta... Sobre o código... deixe eu tentar adiantar alguma coisa... vou tentar apenas simplificar o código atual. Beleza? (A lógica por trás será a mesma.) Basicamente: se os 2 vetores tem os mesmo dados, você não precisaria de 2 vetores... use o mesmo: algoritmo "Identificar valores iguais" var vetNumeros: vetor [1..10] de inteiro i, j: inteiro inicio para i de 1 ate 10 faca escreva ("Digite o ", i:1, "° número: ") leia(vetNumeros[i]) limpaTela() fimPara para i de 1 ate 10 faca para j de 1 ate 10 faca se (vetNumeros[i] = vetNumeros[j]) e (i <> j) entao escreval("O número ", vetNumeros[i]:1, " se encontra na posição ", i:1, ".") fimse fimpara fimpara fimAlgoritmo Esse código acima é equivalente ao seu... apenas simplifiquei um pouco... Para facilitar os testes, você não precisa ficar redigitando os dados toda hora... tem 2 formas boas de resolver isso: colocar para gerar números aleatórios; (Atribuindo valores diretamente ao vetor. A vantagem que já predetermina o resultado esperado, ajudando nos testes) deixar os dados já salvos no programa; (Uma maneira simples seria colocar os "leia()" entre o comando ALEATORIO.) Para o segundo, exemplo: algoritmo "Identificar valores iguais" var vetNumeros: vetor [1..10] de inteiro i, j: inteiro inicio ALEATORIO 1,30 //para gerar números aleatórios entre x e y para i de 1 ate 10 faca escreva ("Digite o ", i:2, "° número: ") leia(vetNumeros[i]) //limpaTela() fimPara ALEATORIO off //desativa o "gerador automático" escreval("") para i de 1 ate 10 faca para j de 1 ate 10 faca se (vetNumeros[i] = vetNumeros[j]) e (i <> j) entao escreval("O número ", vetNumeros[i]:1, " se encontra na posição ", i:1, ".") fimse fimpara fimpara fimAlgoritmo Pronto! Daí... sugiro reler o enunciado e tirar as dúvidas de como deve ficar o programa... só após tente implementar aquilo que você entendeu e acha que deve ser o resultado. Pense assim: o que deveria aparecer na tela? Imagine que não precisa de cálculo... apenas fosse desenhar a resposta final, como deveria aparecer na tela? Daí, OU tira dúvidas de como deveria ficar nela, OU, se já conseguiu reformular, começa implementar. Apenas não tente fazer aquilo que ainda não entendeu por "completo". No aguardo -
VisualG Contagem inteligente de um número
Simon Viegas respondeu ao tópico de Felipe_Fernandes em Programação - iniciantes
Essa atuação só corrige o problema de sintaxe... precisa ainda verificar a questão da lógica. O que seria ? O programa já está funcionando como deveria? (Em relação aos resultados.) -
VisualG Algoritmo em pseudocódigo!! resolver exercicio
Simon Viegas respondeu ao tópico de Igornascimento em Programação - iniciantes
@Igornascimento, poste seu código completo e em qual parte está com dúvidas. -
VisualG Contagem inteligente de um número
Simon Viegas respondeu ao tópico de Felipe_Fernandes em Programação - iniciantes
@Felipe_Fernandes, faca não tem o "cedinha". E o se usa entao (sem o ~). Simplificando teu código, seria algo como: algoritmo "Contagem Inteligente" // Disciplina: [Linguagem e Lógica de Programação] // Autor(a) : Felipe Fernandes dos Santos Nunes // Data atual: 26/05/2021 var S, cont1, cont: inteiro inicio S <- 1 cont <- 0 enquanto (S >= 0) faca escreval("Informe o valor do numero: ") leia(cont1) se (cont1 <= 0) entao S <- cont1 + 1 senao S <- cont1 - 1 fimSe fimEnquanto escreval("A contagem inteligente é: ", S) fimAlgoritmo Obs.: só refinei a sintaxe do código atual.. não mexi na lógica. -
VisualG Exercício de Algoritmos no VisualG. Não sei por onde começar.
Simon Viegas respondeu ao tópico de Mônica Vitorino em Programação - iniciantes
@Mônica Vitorino, se está utilizando VisualG, precisa seguir a sintaxe desse programa. Uma sugestão seria pegar exemplos de outros códigos para ter um base. Uma dica inicial que te daria é: não tente fazer todo programa de uma vez. Vá fazendo aos pouco. Como já fez algo, para adiantar um pouco, vou tentar explicar utilizando uma tradução de parte do seu próprio código para VisualG. Vamos lá: A primeira coisa é criar uma esqueleto inicial: algoritmo "Gerenciado de produtos" //1) Uma fábrica produz e vende vários produtos e para cada um deles tem-se o //nome, quantidade produzida e a quantidade vendida. Criar um programa que //calcule e mostre: // //a) para cada produto, o nome, a quantidade no estoque (qtde produzida – qtde //vendida) e uma mensagem “estoque baixo”, se o produto tiver menos de 50 itens //no estoque // //b) o nome e a quantidade do produto com maior estoque // //c) o nome e a quantidade do produto com menor estoque inicio escreval(" *** Gerenciado de produtos ***") fimAlgoritmo Pronto... tentar rodar... pressiona F9. Beleza! Está rodando... daí vá fazendo mais alguma coisa e vai testando. Exemplo: Veja: o código não vai ficando "tudo certinho de primeira"... vai rodando, vendo o resultando e ajustando.. a ideia é apenas ir atualizando o código... ele deve sempre ir crescendo.. NUNCA tente fazer tudo de uma vez... Agora vou tentar inserir mais coisas... Por exemplo: vou tentar inserir uma leitura dos dados de produção e venda e calcular o estoque: Tá rodando... e está saindo como "desejado" até aqui. Insere outra coisa... por exemplo, um laço de repetição: Opa! literal não funciona no VisuaG, e agora? Iria pesquisar e descobrir que o correto seria caractere. Aí... tá indo... vai testando e ajustando... "Ah! queria que apagasse a leitura anterior.. como faço?". Iria pesquisar... no VisualG tem o limpaTela(). Exemplo: E cada vez mais vai crescendo o programa... pode ir modificando... reajustando... "mas sempre deve se preocupar mais com o problema atual", ou seja: vai focar mais naquilo novo que está inserindo... Segue código atual: algoritmo "Gerenciado de produtos" //1) Uma fábrica produz e vende vários produtos e para cada um deles tem-se o //nome, quantidade produzida e a quantidade vendida. Criar um programa que //calcule e mostre: // //a) para cada produto, o nome, a quantidade no estoque (qtde produzida – qtde //vendida) e uma mensagem “estoque baixo”, se o produto tiver menos de 50 itens //no estoque // //b) o nome e a quantidade do produto com maior estoque // //c) o nome e a quantidade do produto com menor estoque var nome: caractere qtdEstoque: inteiro qtdProduzida: inteiro qtdVendida: inteiro resp: caractere inicio enquanto (resp <> "N") faca limpaTela() escreval(" *** Gerenciador de produtos ***") escreval("Informe os dados do produto!") escreval("") escreva ("Nome: ") leia(nome) escreva ("Qtd. produzida: ") leia(qtdProduzida) escreva ("Qtd. vendida: ")//<-- essa texto tava errad, vê nos outros! leia(qtdVendida) qtdEstoque <- qtdProduzida-qtdVendida escreval("") escreval("") escreval(" DADOS DO ESTOQUE ") escreval("") escreval("Nome : ", nome) escreval("Qtd. em estoque: ", qtdEstoque) escreval("") escreval("Deseja cadastrar ou produto?") leia(resp) fimEnquanto) fimAlgoritmo *** Tente dar continuidade a esse código. Seu objetivo final é que todos os requisitos do enunciado sejam seguidos... lembre-se: NÃO TENTE FAZER TUDO DE UMA VEZ. Imagine só um novo detalhe e insira... e vá testando. A medida que ganhar experiência vai conseguir fazer mais rápido e reduzir os teste... mas não tenha pressa. Após, poste seu código completo e onde eventualmente está com dúvidas. Adendo: mais pra frente vemos a possibilidade do uso de vetores. Que faria muito mais sentido para o contexto... só que depende se você já estudou isso ou não... Adendo 2: não, não tente ainda fazer com vetores.. Vá fazendo dessa forma e depois ajudamos a ajustar. No aguardo. -
VisualG Calculadora que faz operações básicas
Simon Viegas respondeu ao tópico de Alexsander Romandini em Programação - iniciantes
@Alexsander Romandini, você está repetindo a leitura dos números várias vezes. Não precisa (não deveria). Veja: Atual: Observe que está fazendo a mesma coisa em cada um dos casos... bastaria ler antes do escolha. Exemplo: escreval("5.Sair") escreval("") leia(menu) escreva ("Digite o 1º numero:") leia(num[1]) escreva ("Digite o 2º numero:") leia(num[2]) escolha menu caso ("1") num[3] <- num[1]+num[2] escreval(num[1], " +", num[2], " =", num[3]) caso ("2") num[3] <- num[1]-num[2] escreval(num[1], " -", num[2], " =", num[3]) Observe que depois dos símbolos da operações e depois "=" foram removidos os espaços... pois o VisualG já insere um espaço automaticamente antes dos números (ainda não consegui entender o motivo disso ), ou seja: se deixar, vão ficar 2 espaços... fica visualmente feio. Qualquer coisa faça o teste e perceba a diferença. Só uns detalhes: Adendo 1: Sobre: Dizer que "não existe" seria imprecisão... na verdade as divisões por zero são "indeterminadas", ou, no caso especial da divisão 0 por 0, seria "indefinida". Que são coisas diferentes de "não existente". De um modo geral, em vez de dizer "impossível", sugeriria utilizar "não é possível". Pelo menos soa mais leve, rs. Para efeitos de demonstração: 5/0: Mas já 0/0: Adendo 2: No enunciado fala-se em "soma", mas no contexto do problema (exercício) esse termo estaria impreciso também. Soma seria o "resultado" da adição. Chamar a adição de soma, seria o mesmo que chamar a multiplicação de produto; ou a divisão de quociente; ou a subtração de resto etc. Mas se no enunciado tem "soma", utilize "soma" mesmo. -
C O que falta no codigo da Matriz para o programa funcionar?
Simon Viegas respondeu ao tópico de RafaLorenzzo 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 Algoritmo que mostre o nome, valor da venda e comissão para 3 corretores
Simon Viegas respondeu ao tópico de calangostoso em Programação - iniciantes
@Victor Leo, poste o código do que já conseguiu fazer e em qual parte está com dúvidas. -
VisualG Calculadora que faz operações básicas
Simon Viegas respondeu ao tópico de Alexsander Romandini em Programação - iniciantes
Olá, @Alexsander Romandini. Dicas gerais: 1. O código *sempre* deve está rodável. Ele não deve rodar apenas na parte que você está com dúvidas; 2. Vá fazendo o algoritmo aos poucos; 3. Procure seguir estritamente o enunciado. Como já tem uma base... vou tentar reformular seguindo esse princípios acima. Pode começar com o esqueleto base: algoritmo "Calculadora que faz operações básicas" inicio fimalgoritmo Eu sugiro já inserir uns comentários complementares. (Pelo menos o enunciado... ajuda para criar o algoritmo.) algoritmo "Calculadora que faz operações básicas" // Disciplina : <preencha o dado> // Professor : <preencha o dado> // Descrição : Calculadora que faz operações básicas: Adição, Subtração // Divisão e Multiplicação // Autor(a) : Alexsander Romandini // Data versão : 21/05/2021 //ENUNCIADO //1. Soma 2. Subtração 3. Divisão 4. Multiplicação 5. Sair //Peça para o usuário digitar o número desejado e, logo em seguida, os dois //números para a operação. Guarde os números digitados pelo usuário em um vetor //de 3 posições na posição 1 armazene o primeiro número, na posição 2 armazene //o segundo número e na posição 3 armazene o resultado da operação. Apresente o //resultado na tela, no formato: numero1 operação numero2 = resultado. Exemplo: //3 + 5 = 8 Tome cuidado com a operação de divisão, não deixe ousuário digitar //o denominador zero, pois não existe divisão por zero. Portanto, peça para //ele digitar novamente, caso isso aconteça. A calculadora deverá permanecer //em um laço de repetição até o usuário digitar 5 (que é a opção de sair). inicio fimAlgoritmo Se você rodar esses códigos... eles vão funcionar... apenas não vão fazer algo... já ainda não foi feito nada relevante... Pronto.. para ir implementando o código, é necessário primeiro entender todo o enunciado. Tenha isso em mente: Para resolver um problema, é necessário entender o problema antes Tem lá um ponto notável: Ou seja: os dados precisam ficar no vetor. Observe que o escolha/caso deveria servir apenas para "selecionar" qual operação vai fazer... você pode então ler primeiro todos os "dados externos" e depois efetuar os tratamentos. Algo como: Esboço inicial: var menu: caractere x, y: real inicio escreva ("Digite a opcao desejada: ") escreval("") escreval("1. Adição") escreval("2. Subtração") escreval("3. Divisão") escreval("4. Multiplicação") escreval("") escreval("5. Sair") escreval("") leia(menu) escreval("") escreva ("Digite o 1º numero: ") leia(x) escreva ("Digite o 2º numero: ") leia(y) fimAlgoritmo Daí, como ele quer os dados no vetor, insere neles: algoritmo "Calculadora que faz operações básicas" // Disciplina : <preencha o dado> // Professor : <preencha o dado> // Descrição : Calculadora que faz operações básicas: Adição, Subtração // Divisão e Multiplicação // Autor(a) : Alexsander Romandini // Data versão : 21/05/2021 //ENUNCIADO //1. Soma 2. Subtração 3. Divisão 4. Multiplicação 5. Sair //Peça para o usuário digitar o número desejado e, logo em seguida, os dois //números para a operação. Guarde os números digitados pelo usuário em um vetor //de 3 posições na posição 1 armazene o primeiro número, na posição 2 armazene //o segundo número e na posição 3 armazene o resultado da operação. Apresente o //resultado na tela, no formato: numero1 operação numero2 = resultado. Exemplo: //3 + 5 = 8 Tome cuidado com a operação de divisão, não deixe ousuário digitar //o denominador zero, pois não existe divisão por zero. Portanto, peça para //ele digitar novamente, caso isso aconteça. A calculadora deverá permanecer //em um laço de repetição até o usuário digitar 5 (que é a opção de sair). var menu: caractere x, y: real vetDados: vetor [1..5] de real inicio escreva ("Digite a opcao desejada: ") escreval("") escreval("1. Adição") escreval("2. Subtração") escreval("3. Divisão") escreval("4. Multiplicação") escreval("") escreval("5. Sair") escreval("") leia(menu) escreval("") escreva ("Digite o 1º numero: ") leia(x) escreva ("Digite o 2º numero: ") leia(y) vetDados[1] <- x vetDados[2] <- y escolha menu caso "1" vetDados[3] <- x+y caso "2" vetDados[3] <- x-y fimEscolha escreval("Conteúdo de vetDados[3]: ", vetDados[3]:1:3) fimAlgoritmo Tenha ciência que tudo isso são esboços... a medida que vai incrementando coisas, vai ajustando aqui e ali... mas sempre vá deixando funcionável. O código tem que ir crescendo com lógica... NUNCA TENTE FAZER TUDO DE UMA VEZ. Perceba do já foi sugerido acima... eu estou tentando seguir estritamente o enunciado. Exemplo do que já tem em negrito: Não necessariamente precisar ser em ordem... poderia criar logo laço de repetição, por exemplo. Daí você pode ir implementando outra coisa... como inserir as outras 2 opção do menu; OU formatar o texto de saída; OU inserir o laço de repetição; etc. Domine bem o enunciado. Entenda cada uma das partes. E vá refatorando o código. O que você achar que não está certo, vá mudando... mas sempre seguindo os requisitos que está no enunciado e deixando funcionando. Vá sempre testando.. a medida que vai ganhando experiência, vai cada vez fazer menos teste... mas é normal não conseguir fazer logo de primeira.. é para isso que serve os exercícios. Tente fazer alguma coisa, poste o código completo e a parte que, no momento, não conseguiu resolver sozinho. No aguardo. ADENDO: o vetor precisa apenas de 3 posições. Estou com preguiça de editar. ADENDO 2: A base da ideia faz sentido.. mas está fugindo da sintaxe do VisualG e dos conceito do paradigma do Português Estruturado... a repetição basicamente funciona deixando o que você quer que repita dentro de uma estrutura de repetição. Como ainda não domina essa parte, pode deixa para o fim. Faça o programa como se não existisse essa necessidade de repetir. Depois explicamos como fazer.. mas veja: se inventar de inserir repetição, tem que deixar funcionado!!! Pela amor... não tente inserir repetição e outra coisa ao mesmo tempo deixando ambos sem funcionar!, rs. Resumindo: esqueça a repetição por enquanto. -
Python Funções para uma Batalha Naval
Simon Viegas respondeu ao tópico de LucasgabrielDSS em Programação - outros
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 Não consigo fazer o algoritmo
Simon Viegas respondeu ao tópico de Roger de Melo Prado em Programação - iniciantes
@Roger de Melo Prado, poste seu código completo para ser reanalisado e também poder servir de base para outros clientes. -
VisualG Não consigo fazer o algoritmo
Simon Viegas respondeu ao tópico de Roger de Melo Prado em Programação - iniciantes
Poste o código completo do que já conseguiu fazer e informe em qual ponto está travado... Sobre: Basicamente vai precisar de estruturas de seleção / desvio condicional, ou em outras palavras, de alguns se. Veja: Primeiro você obtém os dados necessários: Daí faz as verificações: Perceba que a primeira coisa para resolver um problema é entender o problema. No mundo real, quando é que você tomaria multa se fosse seguir os critérios do enunciado? Pense aí... é quando "quando você ultrapassar o limite máximo". Se o limite é 100, e você passar a 101, você estaria sujeito a tomar multa. Entre 0 e 100 não, certo? Então, ai ele estaria delimitando essa faixa entre 100 e 110 (não inclusos*), ou seja: você vai levar multa e vai tomar essa multa em específico. Traduzindo para VisualG, seria algo como: se (velocidadeDoMotorista > velocidadeMaxima) E (velocidadeDoMotorista < velocidadeMaxima+10) entao valorMulta <- 50 fimSe Ou seja: num limite de 100km/h, se passar a 100km/h não entra nessa categoria (na prática não vai definir o valor da multa). Se passar a 101 entra na categoria. Se passar a 109 também. Já se passar a 110 não entra! (Pois estaria fora dessa categoria.) Pronto... daí define uma próxima categoria. Ex.: se (velocidadeDoMotorista >= velocidadeMaxima+10) E (velocidadeDoMotorista < velocidadeMaxima+30) entao valorMulta <- 100 fimSe A interpretação deixo contigo... caso necessário, faço ajustes e também implemente a terceira categoria... Por aí vai. Qualquer dúvida é só postar. Lembre-se de postar o código atual completo e em qual parte está com dúvidas. -
VisualG Compilação com o VISUAL G
Simon Viegas respondeu ao tópico de Pec em Programação - iniciantes
@Pec, qual programa você utiliza para editar e "compilar" o código? Por favor, anexe um print da tela do programa aberto. Sobre o código, segue um esboço inicial: algoritmo "Cálculos metro cúblico de água" //Antes do início do rodízio de abastecimento de água em Curitiba, quase //ninguém na cidade falava em metros cúbicos (m³), mas, agora, todos //incorporaram essa palavra em seu vocabulário. Considerando que 10m³ //de água custa um sétimo do salário mínimo, elabore um algoritmo que //receba o valor do salário mínimo e a quantidade de m³ gasto em uma //residência. Calcule e mostre em tela: // //* O valor em reais de cada m 3 ; //* O valor em reais a ser pago pela residência; //* O novo valor a ser pago por essa residência com um desconto de 10%. var sal_min: real qtd_m3: real valor_m3: real valor_pagar: real novo_valor_pagar: real inicio escreval("Digite o valor do salario mínimo: ") leia(sal_min) escreval("Digite a quantidade de m³ gasto pela a residencisa: " ) leia (qtd_m3) valor_m3 <- sal_min*20 + qtd_m3*50 //<--essa fórmula é FICTÍCIA!!! valor_pagar <- valor_m3*qtd_m3*99 //<--essa fórmula é FICTÍCIA!!! escreval("") escreval("Valor m³: R$", valor_m3:1:3) escreval("Valor a pagar: R$", valor_pagar:1:2) fimAlgoritmo Compare esse código com o seu... veja as diferenças...depois de entender, vá corrigindo e complementando de acordo com o enunciado. Qual dúvida é só perguntar. -
VisualG Exercício de Algoritmos no VisualG. Não sei por onde começar.
Simon Viegas respondeu ao tópico de Mônica Vitorino em Programação - iniciantes
@Mônica Vitorino, qual programa está utilizando para editar e executar o código? -
VisualG Compilação com o VISUAL G
Simon Viegas respondeu ao tópico de Pec em Programação - iniciantes
@Pec, poste o código completo do que conseguiu fazer e em qual parte está com dúvidas. -
Especifique qual erro está ocorrendo. PS1: independentemente do erro que está ocorrendo, a média só precisa calcular uma vez... depois do enquanto. PS2: provavelmente ele quer a média dos números lidos. (E não a média entre o menor e o maior).
-
@Andrielli, qual erro está dando no teu código? Poste também o enunciado completo da questão, para termos uma melhor base.
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