shadow dog 0 Denunciar post Postado Maio 20, 2009 Pessoal estou aprendendo algoritmo,estou tendo dificuldade para aprender do modo fluxograma estou conseguindo entender e aprender é desse jeito e o meu professor (que ja esta me desanimando)passou uns exercicios e um deles é o seguinte: elaborar um programa que possibilite calcular a área total de uma residencia (comodos). O programa devera solicitar a entrada do nome (comodo), da largura e do comprimento de um determinado comodo lido e também uma mensagem solicitando do usuario a confirmação para continuar calculando novos comodos. caso o usuario responda não, o programa devera apresentar o valor total acumulado da área residencial e ser encerrado... Eu fiz no visualg e rodou de boa, levei para me professor ver o algoritmo no papel e ele falou que esta errado, falou que do jeito que eu fiz pode ter estouro de pilha.....disse que nao está certo porque eu tinha que colocar o laço de repetição enquanto.......quero saber se errei mesmo ou se estou certo porque o professor e meio confuso.......desde ja valeu var comodo,opcao,espera,teclas:caracter largura,comprimento,area,total:real total:real procedimento opcao inicio repita limpatela escreva("deseja calcular outra area S / N: ") leia(opcao) limpatela ate (Opcao = "s") ou (Opcao="n") se opcao = "n" entao escreva ("o total da area acumulada é: ",total) senao escreval (" ") escreval (" ") escreval (" ") escreval (" O Total da Area Calculada Foi: ",total) escreval (" ") escreval (" ") escreval (" ") tecla dados fimse fimprocedimento procedimento dados inicio limpatela escreva ("digite o nome do comodo: ") leia (comodo) escreva ("digite a largura: ") leia (largura) escreva ("digite o comprimento: ") leia (comprimento) area<- largura * comprimento total<-total+area opcao fimprocedimento procedimento tecla inicio escreval (" |----------------------------------------------------------|") escreval (" |------- pressione qualquer tecla para continuar ------|") escreval (" |----------------------------------------------------------|") escreval (" ") leia (espera) fimprocedimento inicio dados fimalgoritmo Compartilhar este post Link para o post Compartilhar em outros sites
Tiaguito 0 Denunciar post Postado Maio 20, 2009 também não entendi o porquê do estouro de pilha o código está certo mesmo Compartilhar este post Link para o post Compartilhar em outros sites
shadow dog 0 Denunciar post Postado Maio 21, 2009 pois é ele falou que eu tinha que tirar esse procedimento opcao e colocar todas as informações no programa principal e usar o laço enquanto, mas eu não sei fazer isso ou melhor nao estou conseguindo fazer isso....ele falou que se tivesse passado isso na prova e eu tivesse feito assim ele nao teria aceitado como correto... Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Maio 21, 2009 cara você ta "aprendendo" algoritmo agora e jah ta fazendo td modularizado?? acho q você jah tinha uma boa noçaum de algoritmo e ta ultrapassando o jeito q ele qr q vcs comecem.. faz assim, ao invez de usar procedimento, coloca td no programa principal é soh copiar e colar, pois as variaveis são globais msm.. []s Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 21, 2009 Eu fiz no visualg e rodou de boa, levei para me professor ver o algoritmo no papel e ele falou que esta errado, falou que do jeito que eu fiz pode ter estouro de pilha.....disse que nao está certo porque eu tinha que colocar o laço de repetição enquanto....... Tá parecendo uns casos aqui na UFPR...'Sua questão está errada porque você não usou meu algoritmo'. Entenda uma coisa: se é enquanto, repita, for ou recursão com if, faz o que pede e não foram impostas restrições (pq sem o cara falar você não tem como saber o que ele quer no algoritmo), então está certo. Dá estouro de memória porque você chama uma função dentro da outra sem retornar. O único erro que vi é que você armazena a área calculada em area mas exibe a área acumulada (total). var comodo,opcao,espera,teclas:caracter largura,comprimento,area,total:real total:real procedimento opcao inicio repita limpatela escreva("deseja calcular outra area S / N: ") leia(opcao) limpatela se opcao = "s" entao escreval (" ") escreval (" ") escreval (" ") escreval (" O Total da Area Calculada Foi: ",area) escreval (" ") escreval (" ") escreval (" ") tecla fimse enquanto (opcao = "s") fimprocedimento procedimento dados inicio limpatela escreva ("digite o nome do comodo: ") leia (comodo) escreva ("digite a largura: ") leia (largura) escreva ("digite o comprimento: ") leia (comprimento) area<- largura * comprimento total<-total+area fimprocedimento procedimento tecla inicio escreval (" |----------------------------------------------------------|") escreval (" |------- pressione qualquer tecla para continuar ------|") escreval (" |----------------------------------------------------------|") escreval (" ") leia (espera) fimprocedimento inicio opcao escreva ("o total da area acumulada é: ",total) fimalgoritmo Supondo que o usuário não quer calcular área nenhuma. Compartilhar este post Link para o post Compartilhar em outros sites
shadow dog 0 Denunciar post Postado Maio 21, 2009 quitZAUMMM pois é cara to aprendendo agora, mas ta meio dificil eu ja tentei colocar tudo no programa principal mas nao to conseguindo fazer o laço de repetição.... import java.Isis entao eu coloquei a area acumulada como total porque no final do programa tem que exibir a soma de todos os calculos feito, esse jeito que voce fez nao rodou, realmente esse professor ta começando a me desanimar em programação viu .....esse laço enquanto ta me dando muita dor de cabeça, quero tentar fazer do jeito que ele falou para tentar entender isso...... Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 21, 2009 entao eu coloquei a area acumulada como total porque no final do programa tem que exibir a soma de todos os calculos feito, Criatura, lê de novo o seu código: repita limpatela escreva("deseja calcular outra area S / N: ") leia(opcao) limpatela ate (Opcao = "s") ou (Opcao="n") se opcao = "n" entao escreva ("o total da area acumulada é: ",total) senao escreval (" ") escreval (" ") escreval (" ") escreval (" O Total da Area Calculada Foi: ",total) escreval (" ") escreval (" ") escreval (" ") tecla dados fimse Você calcula o total da área de um cômodo e exibe o total acumulado, que é pra ser exibido no FINAL da execução do programa. caso o usuario responda não, o programa devera apresentar o valor total acumulado da área residencial e ser encerrado... esse jeito que voce fez nao rodou Então arrume,oras. Eu não uso visualg pra saber o que tem ou não nisso. Te garanto que a lógica está certa. Compartilhar este post Link para o post Compartilhar em outros sites
shadow dog 0 Denunciar post Postado Maio 22, 2009 entao consegui entender agora.....o negocio de estouro de pilha iria ocorrer depois de algum tempo usando o programa, eu estava chamando um procedimento e nao estava fechando ele, pois antes do final ja ia para outro procedimento...... lendo direito eu consegui fazer de dois jeitos diferentes, colocando tudo no programa principal e usado os procedimentos so nao consegui usar o tal laço enquanto (mas um dia aprendo).....valeu e obrigado pela força No Programa Principal var comodo,opcao,espera,teclas:caracter largura,comprimento,area,total:real inicio repita limpatela escreva ("digite o nome do comodo: ") leia (comodo) escreva ("digite a largura: ") leia (largura) escreva ("digite o comprimento: ") leia (comprimento) area<- largura * comprimento total<- area+total limpatela escreva("deseja calcular outra area S / N: ") leia(opcao) ate opcao = "n" se opcao="n" entao escreva ("o total da area é: ",total) fimse fimalgoritmo Compartilhar este post Link para o post Compartilhar em outros sites
shadow dog 0 Denunciar post Postado Maio 22, 2009 Com os Procedimentos var comodo,opcao,espera,teclas:caracter largura,comprimento,area,total:real procedimento opcao inicio limpatela escreva("deseja calcular outra area S / N: ") leia(opcao) limpatela se opcao = "n" entao escreva ("o total da area é: ",total) fimse fimprocedimento procedimento dados inicio limpatela escreva ("digite o nome do comodo: ") leia (comodo) escreva ("digite a largura: ") leia (largura) escreva ("digite o comprimento: ") leia (comprimento) area<- largura * comprimento total<- area+total fimprocedimento inicio repita dados opcao ate opcao="n" fimalgoritmo Compartilhar este post Link para o post Compartilhar em outros sites