questões 6 e 8 do modulo 1 programação

Home Fóruns Programação Básica questões 6 e 8 do modulo 1 programação

Marcado: 

Visualizando 15 respostas da discussão
  • Autor
    Posts
    • #68467
      Jonas Mota
      Participante

      nas questões 6 e 8 do modulo 1 é pedido para usar a função de arredondamento. Não consegui usar.
      ela é colocado na parte em que se escreve:
      escreve(” “Matematica.arrendondar(;
      ou quando você declara inteiro e real

    • #68478
      Nuno Sousa
      Participante

      Boa noite.

      A função de arredondamento tem de ser colocada antes do valor que vai ser arredondado, o valor tem de ser colocada entre parênteses seguido de uma vírgula e o número de casas decimais que se pretende. No exemplo de baixo o valor vai ser arredondado para ter apenas 2 casa decimais.

      Exemplo:
      escreva(“O valor é ” + Metamatica.arredondar(valor, 2))

    • #68503
      Jonas Mota
      Participante

      Deixei como comentario a forma que tentei fazer e não deu certo.
      É a ultima linha

      programa
      {
      	inclua biblioteca Matematica
      	
      	funcao inicio()
      	{
      		real v
      		//real r = Matematica.arredondar(v, 3)
      		escreva("Qual o preço do produto? ")
      		leia(v)
      		escreva("Com 5% de desconto, o produto sai por R$" +(v-(v*5/100))+ " ")
      		//escreva("Com 5% de desconto, o produto sai por R$" +Matematica.arredondar(v,2)(v-(v*5/100))+ " ")
      	}
      }
      • Esta resposta foi modificada 2 anos, 10 meses atrás por IcaroFilho. Razão: formatar indentação
      • #68531
        IcaroFilho
        Moderador

        Boa noite.
        Atualmente seu código esta dando erro por falta de fechamento “(” na linha 12.
        Matematica.arredondar(v,2)(v-(v*5/100)) -> Falta uma conexão aqui. (seja um operador aritmético ou uma concatenação)

        Concertando o fechamento dará erro por falta de inicialização da variável v.
        Isto porque já esta executando a variavel antes mesmo de declarar seu valor. Para corrigir pode atribuir um valor nulo a ela em sua declaração.
        real v = 0.0
        Corrigindo essas etapas seu exercicio continuará fora do padrão devido a desorganização. vamos arrumar por etapas.

        1. Declaramos as variaveis que prentede usar. (no caso v e r)
          real v, r
        2. depois fazemos a solicitação do valor ao usuário.
          escreva("Qual o preço do produto? ")
          leia(v)
        3. Agora que temos o valor de v. podemos calcular o desconto.
          r = v - (v *0.05) (OBS: so simplifiquei a conta, que também pode ser r = v – (v * 5 / 100) )
        4. agora que temos todos os parâmetros podemos dar a saída:
          escreva("Com 5% de desconto, o produto sai por R$ ", Matematica.arredondar(r, 2) )
        5. Código completo:
          programa
          {
          	inclua biblioteca Matematica
          	
          	funcao inicio()
          	{
          		real v, r
          		
          		escreva("Qual o preço do produto? ")
          		leia(v)
          
          		r = v - (v *0.05)
          
          		escreva("Com 5% de desconto, o produto sai por R$ ", Matematica.arredondar(r, 2) )
          		
          	}
          }
        • Esta resposta foi modificada 2 anos, 10 meses atrás por IcaroFilho.
    • #68651
      Jonas Mota
      Participante

      Beleza, essa questão 8 eu entendi, mas levando o mesmo raciocínio para a questão 6, ficaria assim:

      programa
      {
      inclua biblioteca Matematica
      inclua biblioteca Util
      funcao inicio()
      {
      real n, k, h // Faltou fazer o arredondamento

      escreva(“Distância em metros: “)
      leia(n)
      escreva(“\n——— CONVERTENDO ———–\n”)

      k = (n /1000)
      escreva(+Matematica.arredondar(k, 2)+ ” Km \n “)

      h = n /100
      escreva(+Matematica.arredondar(k, 2)+ ” Hm \n”) // hectómetro

      escreva(+ (n / 10)+ ” Dam \n”) // decametro

      escreva(+ (n * 10)+ ” dm \n”) // decimetro

      escreva(+ (n * 100)+ ” cm \n”)

      escreva(+ (n * 1000)+ ” mm \n”)

      }
      }

      • #69125
        Tutora Mayla
        Mestre

        Jonas, algumas considerações sobre o seu código:

        • `
          k = (n /1000)
          escreva(+Matematica.arredondar(k, 2)+ ” Km \n “)

          
          Não é necessário colocar o <code>+</code> no inicio do <code>escreva</code>, pois por ser o inicio não há necessidade de concatenação. </li>
          	<li>

          h = n /100
          escreva(+Matematica.arredondar(k, 2)+ ” Hm \n”) // hectómetro
          `
          Aqui está sendo chamada a variável k no lugar da variável h.

        • Para manter o padrão de casas decimais, seria uma boa arredondar também os demais valores. Além da forma como foram feitos os anteriores, há também outra forma de fazer sem a necessidade de criar uma variável para cada: escreva(Matematica.arredondar((n/10), 2)+ ” Dam \n”)

        Espero ter ajudado, quaisquer outras dúvidas estamos a disposição.

    • #69606
      Jonas Mota
      Participante

      olá, eu entendi, porém gostaria de verificar se esta tudo certo com o código.

      programa
      {
      inclua biblioteca Matematica
      inclua biblioteca Util
      funcao inicio()
      {
      real n, k, hm, dam, dm, cm // Faltou fazer o arredondamento

      escreva(“Distância em metros: “)
      leia(n)
      escreva(“\n——— CONVERTENDO ———–\n”)
      Util.aguarde(1200)
      k = n/1000
      escreva(+Matematica.arredondar(k, 2)+ ” Km \n”)
      Util.aguarde(1200)
      hm = n/100
      escreva(+Matematica.arredondar(hm, 2)+ ” Hm \n”) // hectómetro
      Util.aguarde(900)
      dam = n/10
      escreva(+Matematica.arredondar(dam, 2)+ ” Dam \n”) // decametro
      Util.aguarde(1200)
      dm = n*10
      escreva(+Matematica.arredondar(dm, 1)+ ” dm \n”) // decimetro
      Util.aguarde(600)
      cm = n*100
      escreva(+ (n * 100)+ ” cm \n”)
      Util.aguarde(600)
      escreva(+ (n * 1000)+ ” mm \n”)

      }
      }

      • #69664

        Bom dia, Jonas Mota o raciocínio da sua resolução está correto ,porém esse + no início do parenteses escreva(+Matematica.arredondar(hm,2))
        assim como moderador escreveu, não é necessário. ficaria melhor assim: `escreva(Matematica.arredondar(hm,2) + ” Hm\n”) quando utilizamos o simbolo de + para trabalharmos com frases, ele serve para unir duas strings
        ao invés de escrevermos

        escreva(Matematica.arredodar(dam,2))
         escreva(" Dam\n")
        
        //Utilizamos o + para concatenar (unir) as strings
        escreva(Matematica.arredondar(dam,2)    +    " Dam\n") 
        
        //Outro exemplo
        cadeia fruta = " Abacate", fruta2 = " Pimenta"
        escreva(fruta )
        escreva(fruta2)
        escreva(fruta1    +    fruta2)
        
        

        talvez eu te deixe confuso pq não sei explicar direito ,mas no caso a união não seria com a variável dam ,mas com a escrita do que sai dela que é uma frase ou caracter … seria como

        
        // nesse  1° caso não tem a necessidade de concatenar mas pra fins de exemplo
        escreva("Pedro tirou ")
        escreva("10")
        escreva("Pedro tirou " + "10")
        
        //2° Caso
        inteiro numero = 10  
        escreva("Pedro tirou ")
        escreva(numero)
        escreva("Pedro tirou " + numero) 
      • #69697
        Tutora Mayla
        Mestre

        Jonas, o aluno Antonio explicou perfeitamente o que falta de últimos ajustes para o seu código. Fora isso o seu código está muito bom!

    • #75175
      Thiago Duarte
      Participante

      Boa noite tutores e colegas :),
      Estou realizando os exercícios 6 e 10,
      Fiz relativamente rápido ambos porem fiquei com duvida a respeito da função arredondamento, e gostaria se possível de uma validação, para verificar no que posso estar melhorando. Muito obrigado 😉

      ex 6 –

      programa
      {

      inclua biblioteca Matematica –> mat
      funcao inicio()
      {
      real d, k, h, da, dm, c, m
      escreva(“Distância em metros: “)
      leia(d)
      escreva(“———CONVERTENDO———\n”)
      k= d/1000
      escreva( mat.arredondar(k,2) + ” Km \n “)
      h= d/100
      escreva( mat.arredondar(h,2) + ” Hm \n “)
      da= d/10
      escreva( mat.arredondar(da,2) + ” Dam \n “)
      dm= d*10
      escreva( mat.arredondar(dm,2) + ” dm \n “)
      c= d*100
      escreva( mat.arredondar(c,2) + ” cm \n “)
      m= d*1000
      escreva( mat.arredondar(m,2) + ” mm \n “)

      }
      }

      ex 10 –

      programa
      {

      inclua biblioteca Matematica –> mat
      inclua biblioteca Tipos –> tip
      funcao inicio()
      {
      real an, pd, atf, pdv
      escreva(“Cada cigarro reduz 10 minutos de vida \n”)
      escreva(“————————————- \n”)
      escreva(“Há quantos anos você fuma? “)
      leia(an)
      escreva(“Quantos cigarros você fuma por dia? “)
      leia(pd)
      escreva(“————————————- \n”)
      atf=(pd*365)*an
      escreva(“Ao todo, até agora você ja fumou ” + tip.real_para_inteiro(atf))
      pdv=(atf*10)/1440
      escreva(“\n Estima-se que você já perdeu ” + mat.arredondar(pdv,2) + ” dias”)

      }
      }

      • #75213
        IcaroFilho
        Moderador

        Bom dia Thiago.
        Os exercícios estão corretos. Podemos só adicionar algumas coisas para ir dando uma polida neles. Entre as dicas estão boas praticas que já é bom ir se habituando.

        • Para ambos os exercícios.
          Tente criar nomes de variáveis mais sugestíveis. Por mais que faça logica pra você, crie o hábito de “codar” para outros programadores lerem.
        • Ex6
          Tendo em vista que o programa apenas irá mostrar os resultados. não precisa criar uma variável para cada item. (pois terá perca de desempenho por uso de memoria em programas maiores)
          Pode fazer a operação dentro do próprio arredondar.
          Ex.: KM: escreva( mat.arredondar ( (d / 1000) , 2 ) + ” Km \n “)
        • Ex10

          atf=(pd*365)*an –> Por se tratar de multiplicação, não é necessário a utilização de parênteses.

      • #75218
        Thiago Duarte
        Participante

        Bom dia Icaro,
        Obrigado pelo feedback.
        Era essa linha que você enviou a respeito do arredondamento que eu estava procurando, muito obrigado.
        Os nomes das variáveis ficaram meio que rushado devido ao tempo que tenho rsrsrsrs, mas irei corrigir e ficar mais atento sobre.
        Agradeço pela resposta 🙂

    • #75970

      OI! Estou com uma dúvida aqui. Eu fiz um cálculo que é este: 50*365*8*1/1440 e o valor é este: 101,3888888888889 … no entanto o meu programa insiste em dizer que a resposta é 101,0!!!! Porque ele não está me dando 3 casas depois da vírgula como eu pedi? Aqui em baixo está meu código:

      
      programa
      {
      	inclua biblioteca Matematica --> mat
      	funcao inicio()
      	
      	{
      	real cigarro_por_dia
      	real anos_fumando
      	real cigarros
      	real dias_perdidos_pelo_cigarro
      	real dppc_arredondado
      			     
      	     escreva("----------------Não fume----------------")
      	     escreva("\n Cada cigarro reduz 10 minutos de vida")
      	     escreva("\n Quantos cigarros você fuma por dia?" )
      	     leia(cigarro_por_dia)
      	     escreva("\n Há quantos anos você fuma? ")
      	     leia(anos_fumando)
      	     cigarros = 5*365*8  
      	     dias_perdidos_pelo_cigarro = 50*365*8*1/1440 
      	     dppc_arredondado = mat.arredondar(dias_perdidos_pelo_cigarro, 3)
      	     escreva("Ao todo, até agora você já fumou ", cigarros," cigarros no total!\n")
      	     escreva("Estima-se que foram perdidos ", dppc_arredondado, " dias de vida")
      	    	}    
      }
      

      Desde já agradeço!

    • #75991

      OI! Meu amigo disse que o problema pode ser de Type Casting que é basicamente quando o programa não te obedece. Eu em nenhum momento usei o valor das variáveis como sendo inteiro, mas pelo problema de Type Casting ele (sabe-se lá porquê?!) simplesmente considera os números (qual deles?) como sendo inteiro. Assim talvez isso explique a minha situação. No entanto eu tentei resolver este problema importando da biblioteca tipos a expressão inteiro_para_real. Mas mesmo assim ele continua dando a resposta de tempo de vida para 101.0 dias!!!!!!!

      Aqui está meu código atual:

      programa
      {
      	inclua biblioteca Matematica --> mat
      	inclua biblioteca Tipos --> t
      	funcao inicio()
      	
      	{
      	real cigarro_por_dia
      	real anos_fumando
      	real cigarros
      	real dias_perdidos_pelo_cigarro
      	real dppc_arredondado
      			     
      	     escreva("----------------Não fume----------------")
      	     escreva("\n Cada cigarro reduz 10 minutos de vida")
      	     escreva("\n Quantos cigarros você fuma por dia?" )
      	     leia(cigarro_por_dia)
      	     escreva("\n Há quantos anos você fuma? ")
      	     leia(anos_fumando)
      	     cigarros = t.inteiro_para_real(5*365*8)
      	     dias_perdidos_pelo_cigarro = t.inteiro_para_real(50*365*8*1/1440)
      	     dppc_arredondado = mat.arredondar(dias_perdidos_pelo_cigarro, 3)
      	     escreva("Ao todo, até agora você já fumou ", cigarros," cigarros no total!\n")
      	     escreva("Estima-se que foram perdidos ", dppc_arredondado, " dias de vida")
      	    	}    
      }
      • #76015
        Tutora Mayla
        Mestre

        Luiz, na conta 50*365*8*1/1440 os dividendos e divisores são inteiros e uma divisão entre números inteiros irá retornar um número inteiro. Como a variável a qual esse resultado está sendo atribuído é real, ele irá adicionar o .0 para torna-lo real, mas já terá perdido os decimais pois a conversão para real só será feita depois da conta ter terminado.
        Para que o resultado seja do tipo real, uma dos números deve ser real, para isto acontecer basta fazer algo como: t.inteiro_para_real(50*365*8*1)/1440. Desta forma os valores decimais serão levados em conta na realização da operação. E na linha de baixo será feito o arredondamento com 3 casas decimais como desejado.

        Espero ter ajudado, quaisquer dúvidas estamos a disposição.

    • #76216
      Marcos Missone
      Participante

      Boa Noite

      Peco a vossa obresercao nos exercicios 008 e 009
      alguns comandos nao funcionam suspeito que seja meu erro

      programa
      {
      /// Exercicios 008
      inclua biblioteca Matematica
      	funcao inicio()
      	{
      
      real preco, npreco
      
      escreva("Qual e  preco de produto ? ")
      leia(preco)
      npreco=preco-(preco*5/100)
      escreva(" com 5% de desconto o produto sai por " + npreco )
      //escreva(" com 5% de desconto o produto sai por " + npreco + matematica.arredondar(npreco, 2))
      	}
      }
      • #76300
        Michel Souza
        Participante

        Marcos o seu código do exercício 8 está correto, a sua dúvida é sobre o arredondamento que não tá funcionando, é isso? Por isso colocou como comentário.
        //escreva(" com 5% de desconto o produto sai por " + npreco + matematica.arredondar(npreco, 2))
        Aqui você colocou npreco 2 vezes, sem necessidade.
        E colocou matematica com letra minúscula, coloca em maiúscula, assim:
        Matematica.arredondar(npreco, 2).
        Recomendo usar um apelido:
        inclua biblioteca Matematica –> mat
        mat.arredondar(npreco, 2)

      • #76427
        Tutora Mayla
        Mestre

        Marcos, quanto ao exercício 008 o aluno Michel já apontou perfeitamente qual pode ser o problema, caso a dúvida persista volte a entrar em contato com mais detalhes por favor.

    • #76217
      Marcos Missone
      Participante

      `programa
      {
      ///Exercicios 009
      funcao inicio()
      {
      real salario, nsalario, reajuste
      cadeia nome
      escreva(“Nome do Funcionario: “)
      leia(nome)
      escreva(“Salario: “)
      leia(salario)
      escreva(“Reajuste (%): “)
      leia(reajuste)
      nsalario=salario+(salario*3/100)
      escreva(“\n———————RESULTADO——————–“)
      escreva(“\n” + nome + ” ganhava ” + salario + ” depios de ganhar ” + reajuste)
      escreva(“\nde aumento vai passar a ganhar ” + nsalario)

      • #76428
        Tutora Mayla
        Mestre

        Marcos, na conta do novo salário a porcentagem está fixa como 3, falta utilizar a variável de reajuste que define essa porcentagem, para isto faça:
        nsalario=salario+(salario*reajuste/100)

        Fora isto o código está perfeito, parabéns!

    • #76289
      Marcos Missone
      Participante

      Boa Noite

      Solicito analise do exercicio

      programa

      /// EXERCICIOS 007 – PINTANDO PAREDE
      // Inf. Import: um litro de tinta pinta 2m²
      {
      funcao inicio()
      {
      real largura, altura, m
      escreva(“largura da parede: “)
      leia(largura)
      escreva(“Altura da parede: “)
      leia(altura)
      m=(altura*largura)
      escreva(“Uma parede de ” + altura + ” X ” + largura + ” tem uma area de ” + m + ” m² “)
      m=(altura*largura)/2
      escreva(“\nPrecisamos de ” + m + ” latas de tinta “)`

      • #76301
        Michel Souza
        Participante

        Marcos, bom o seu programa tá funcionando. Porém tem algumas ressalvas.
        você colocou uma mesma variável “m” pra receber tanto a área da parede quanto a quantidade de tintas/litros.
        Até funciona, mas não é bom. O ideal é usar uma variável para a área da parede e outra para a quantidade de tinta, Por exemplo:
        real area, tinta
        O cálculo poderia ficar assim:

        area = (largura * altura)
        tinta = area / 2 // como eu já tenho o valor da area posso colocar direto no cálculo.
        escreva("Uma parede " + largura + " x " + altura + " tem uma área(texto) de: " + area //(variável))
        escreva("\nPrecisamos de " + tinta + " litros de tinta para conseguir pintar.")

        Entendeu.
        ou poderia fazer assim também:

        escreva("Uma parede " + largura + " x " + altura + " tem uma área de: " + (largura * altura) + "m²" 
        escreva("\n Precisamos de " + (largura * altura / 2) + " litros de tinta para conseguir pintar.")

        Com a operação/cálculo direto no escreva.
        Apesar que eu não gosto de trabalhar assim. Prefiro separar cada coisa em seu devido lugar.
        Valeu, espero ter ajudado.

      • #76429
        Tutora Mayla
        Mestre

        Marcos, o Michel aqui apontou muito bem os pontos de melhoria do código, ressalto que está funcionando da forma que está feito.
        Parabéns pela dedicação e esforço, quaisquer dúvidas basta entrar em contato.

    • #89939
      Marcos Gleick
      Participante

      Boa noite dev’s estou com dúvida em relação como que irei arredondar estes números, já tentei diversas formas mais não consegui, preciso de ajuda. Aguardo o retorno obrigado.

      programa
      {

      funcao inicio()
      {

      real km,hm,dam,m,dm,cm,mm

      escreva(“Distância em metros: “)

      leia(m)

      escreva(“——–CONVERTENDO——–\n”)
      km=m/1000
      escreva(km,” Km \n”)
      hm=m/100
      escreva(hm,” hm \n”)
      dam=m/10
      escreva(dam,” dam \n”)
      dm=m*10
      escreva(dm,” dm \n”)
      cm=m*100
      escreva(cm,” cm \n”)
      mm=m*1000
      escreva(mm,” mm \n”)

      }
      }

      • #89984
        IcaroFilho
        Moderador

        Marcos, movi seu tópico pois o mesmo já foi criado.
        Antes de abrir um novo tópico, procure pelo forum se alguem ja não teve a mesma duvida.

        Aqui tem bastante conteúdo referente ao que deseja. se ainda permanecer com duvida, fale por aqui que ajudaremos.

    • #94692

      exercicio 08 mod01
      fiz assim, fiquei brincando depois.
      mas essa parte de arrendondamento fica meia chata mesmo, até pegar, mas vai dar certo.

      programa
      {

      inclua biblioteca Matematica –> m
      inclua biblioteca Util –> j
      funcao inicio()
      {

      real prod, r
      escreva(“Qual é o preço do produto? “)
      leia(prod)
      r = prod-(prod*5/100)
      escreva(“\n\n————— RESULTADO —————“)
      escreva(“\n\nValor sendo gerado…\n”)
      Util.aguarde(2000)
      escreva(“\nCom 5% de desconto, o produto sai por R$”+ m.arredondar(r, 2)+”\n\n”)
      Util.aguarde(2000)
      escreva(” Finalizando processo…\n\n”)
      Util.aguarde(2000)
      escreva(” \n——————————————-\n”)
      escreva(” Fim”)
      escreva(” \n——————————————-\n”)

      }
      }
      `

    • #112739
      Claudia
      Participante

      `programa
      {
      inclua biblioteca Matematica –> mat

      funcao inicio()
      {

      escreva(“{ EXERCÍCIO 006 – Conversor de Medidas} \n” )
      escreva(” \n——–CONVERTENDO———\n”)
      escreva ( “\n Distância em metros: \n”)

      real m, resp, arredondado

      leia (m)
      resp = m/1000
      arredondado = mat.arredondar(resp, 2)

      escreva (“\n” + (m) + ” m, é igual: \n”)

      escreva (“\n” + (m/1000) + ” km \n”)
      escreva ((m/100) + ” hm \n”)
      escreva ((m/10) + ” dam \n”)
      escreva (m + ” m \n”)
      escreva (( m * 10) + ” dm \n”)
      escreva ((m * 100) + ” cm \n”)
      escreva ((m * 1000) + ” mm \n”)

      }
      }

    • #112814
      Tutora Jessica
      Moderador

      Ola Claudia, trouxe a sua dúvida para uma dúvida já existente no fórum com algumas explicações que acho que pode lhe ajudar, no fórum tem outras explicações desse exercício também falando sobre arredondamento, veja se com as explicações acima você consegue resolver a sua questão, caso não consiga, só retornar ao fórum que iremos lhe ajudar 🖖

      • #113231
        Claudia
        Participante

        Jessica, não funcionou! Até por que, muitos exercícios são diferentes! O unico parecido, tinha alguns erros que mais me deixaram confusa que ajudou.
        Não estou pedindo a resposta, gostaria apenas de saber como chamar o arredondamento para o meu código.
        Assisti algumas explicações no YouTube, mas como são antigas, não bate com o novo formato do Portugol.
        Mesmo assim obrigada por tentar ajudar!

    • #113239
      Tutora Jessica
      Moderador

      Ola Claudia, você precisa usar a variável arredondado em algum lugar, você apenas ditou que ela leva a biblioteca matematica.
      Veja o exemplo acima do aluno Matheus, ele usa diretamente a biblioteca dentro do código, você vai usar a variável arrendodado.

Visualizando 15 respostas da discussão
  • Você deve fazer login para responder a este tópico.