Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

shadow dog

algoritmo certo ou errado ?

Recommended Posts

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.