Ir ao conteúdo

Posts recomendados

Postado

Gente comecei a estudar programação faz uma semana e estava fazendo uns exercícios, mas esse da fórmula de bhaskara está dando "Invalid floating point operation" na hora de executar, como não estou conseguindo achar o erro queria pedir ajuda de vocês. Desde já agradeço.

IMG_20171022_170005397_HDR.jpg

  • Curtir 1
Postado

@Jacqueline Santos     ele está dando esse erro por que,   o visualg não consegue calcular raiz quadrada de números negativos,  então no seu código você precisa colocar essa instrução :

rz:=raizq(abs(delta))

para que,  se o número for negativo ele faz o cálculo como se fosse positivo mesmo ou seja ele ignora o sinal que esteja antes do número .   então seu código ficaria assim :

algoritmo "bhaskara"
var
  a,b,c,x1,x2,yv,xv,delta,rz : real
inicio
  escreva("informe o valor de a ")
  leia(a)
  escreva("informe o valor de b ")
  leia(b)
  escreva("informe o valor de c ")
  leia(c)
  delta <- b^2 - 4*a*c
  rz:=raizq(abs(delta))
  x1 := (-b)+rz/2*a
  x2 := (-b)-rz/2*a
  escreval("-----------------------------")
  escreval("o valor de delta é: ",delta)
  escreval("-----------------------------")
  escreval("o valor de x1 e x2 é: ",x1,x2)
  escreval("----------------------------")
  escreval("parabola")
  yv := ((delta)/4*a)
  xv := ((-b)-2*a)
  escreval("o valor do vértice é: ",yv)
  escreval("o valor do vértice é: ",xv)
fimalgoritmo

assim ele compila e mostra os resultados normalmente, no entanto estou sem tempo para calcular o resultado para ver se está certo, veja aí se confere.

  • Curtir 1
  • Membro VIP
Postado

Olá a todos.

 

@Jacqueline Santos, por favor, edite sua postagem anterior e substitua a imagem do código pelo texto do código, ou seja, basta copiar o algoritmo do Visualg, clicar no botão CODE (<>) e colar o código. Dessa forma, fica mais fácil, para nós contribuidores, analisar o código e/ou testar no compilador.

 

 

 

@devair1010 e @Jacqueline Santos, alguns pontos:

 

Em 22/10/2017 às 22:12, devair1010 disse:

@Jacqueline Santos ele está dando esse erro por que,  o visualg não consegue calcular raiz quadrada de números negativos

Creio que seja isso mesmo, mas veja, para o mundo dos reais de fato não existe raiz quadrada de número negativo, ou seja, o que pode está errado é o algoritmo, não a conta.

 

Em 22/10/2017 às 22:12, devair1010 disse:

[...] então no seu código você precisa colocar essa instrução :

rz:=raizq(abs(delta))

para que,  se o número for negativo ele faz o cálculo como se fosse positivo mesmo ou seja ele ignora o sinal que esteja antes do número .


Vejam, a fórmula de Bhaskara utiliza a "raiz de Delta", não "a raiz do módulo de Delta". Vai acabar sendo uma conta diferente e poderá resultar uma resposta incorreta.

 

O foco geral do problema está na "Fórmula de Bhaskara", correto?. Já o "problema citado" consta na parte do cálculo da Discriminante (Delta), veja uma definição sobre ela:

Citação

Discriminante é a expressão presente dentro da raiz na fórmula de Bhaskara. É comumente representado pela letra grega Δ (Delta) e recebe esse nome pelo fato de discriminar os resultados de uma equação da seguinte maneira:

 

Δ < 0, então a equação não possui resultados reais;
Δ = 0, então a equação possui apenas um resultado real ou possui dois resultados iguais (essas duas afirmações são equivalentes);
Δ > 0, então a equação possui dois resultados distintos reais.

 

Portanto, para calcular as raízes de uma equação do segundo grau, primeiramente calcule o valor numérico de Δ.

Fonte: http://brasilescola.uol.com.br/matematica/formula-bhaskara.htm

 

Logo, é necessário verificar o valor de Delta antes de efetuar a conta e tomar a devidas providência para cada caso. (poderia usar se para cada possibilidade)

 

 

No aguardo.

  • Curtir 2
  • 3 meses depois...
Postado

O erro "Invalid floating point operation" no caso da raiz quadrada é em razão da disposição do calculo. Basta na verificação do delta<0, não verificar as raízes, pois o visual ao calcula-las com o delta negativo retorna o erro.

 

Veja um exemplo:

Algoritmo "Raiz quadrada"
// Disciplina  :  [Linguagem e Lógica de Programação]
// Professor   :  Edgar Ribeiro
// Descrição:
// Desenvolver um algoritmo que leia os coeficientes (a , b e c) de uma equação
// do segundo grau e calcule suas raízes. O programa deve mostrar, quando
// possível, o valor das raízes calculadas e a classificação das raízes.
// Autor(a)    : xxxx
// Data atual  : 26/01/2018
Var
   // Seção de Declarações das variáveis
   a, b, c, delta, x1, x2 : real
Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...
   Escreva ("Informe os coeficientes a,b e c, da equação: ")
   Leia (a)
   Leia (b)
   Leia (c)
   delta <- (exp(-b,2)- 4*a*c)
   se delta = 0 então
      x1 <- (-b + raizQ(delta))/(2 * a)
      x2 <- (-b - raizQ(delta))/(2 * a)
      Escreva ("A equação possui raizes reais iguais: X1=X2 = ",x1)
   senao
      se delta > 0 então
         x1 <- (-b + raizQ(delta))/(2 * a)
         x2 <- (-b - raizQ(delta))/(2 * a)
         Escreva ("A equação possui duas raizes reais distintas: X1=",x1, " e X2=",x2)
      senao
         se delta < 0 então
            Escreva ("A equação não possui raizes reais")
         fimse
      fimse
   fimse
Fimalgoritmo

 

  • Curtir 2
  • 2 anos depois...
Postado

Boa tarde!
Estou tendo o mesmo problema, porém meu código não possui raiz quadrada. Já tentei fazer o negócio de alterar la nas configurações de região, mas nada também.

 

Algoritmo "media_pares"

Var

   N, i, QuantidadePares, SomaPares : inteiro
   media : real
   vet : vetor[0..20] de inteiro

Inicio

   escreva("Quantos elementos terá o vetor? ")
   leia(N)

   QuantidadePares <- 0
   SomaPares <- 0

   para i de 0 ate N - 1 faca
      leia(vet[i])
      se vet[i] % 2 = 0 entao
         SomaPares <- SomaPares + vet[i]
         QuantidadePares <- QuantidadePares + 1
      fimse
   fimpara

   media <- SomaPares / QuantidadePares

   se QuantidadePares > 0 entao
      escreva("A MÉDIA DOS PARES É: ", media)
   senao
      escreva("NÃO HÁ NÚMEROS PARES")
   fimse

Fimalgoritmo

 

  • Membro VIP
Postado

@VictorMenezesNA, sobre:

 

16 horas atrás, VictorMenezesNA disse:

Estou tendo o mesmo problema, porém meu código não possui raiz quadrada. Já tentei fazer o negócio de alterar la nas configurações de região, mas nada também.

 

Qual problema? Por favor, dê outros detalhes do que está ocorrendo e também envie prints do erro relatado.

Postado
Em 03/01/2021 às 15:44, VictorMenezesNA disse:

Boa tarde!
Estou tendo o mesmo problema, porém meu código não possui raiz quadrada. Já tentei fazer o negócio de alterar la nas configurações de região, mas nada também.

 

Algoritmo "media_pares"

Var

   N, i, QuantidadePares, SomaPares : inteiro
   media : real
   vet : vetor[0..20] de inteiro

Inicio

   escreva("Quantos elementos terá o vetor? ")
   leia(N)

   QuantidadePares <- 0
   SomaPares <- 0

   para i de 0 ate N - 1 faca
      leia(vet[i])
      se vet[i] % 2 = 0 entao
         SomaPares <- SomaPares + vet[i]
         QuantidadePares <- QuantidadePares + 1
      fimse
   fimpara

   media <- SomaPares / QuantidadePares

   se QuantidadePares > 0 entao
      escreva("A MÉDIA DOS PARES É: ", media)
   senao
      escreva("NÃO HÁ NÚMEROS PARES")
   fimse

Fimalgoritmo

 

 

Brother,seu problema é diferente da colega acima, não aparece nenhuma mensagem de "Invalid floating point operation" e deveria ter criado outro tópico para não confundir outras pessoas;

 

Tu criou um vetor inteiro e está tentando ler as posições do vetor por meio do contador do ' i ', logo, durante a leitura de cada posição não há valores, não faz sentido você querer ler um vetor sem valores.

 

Adicionei valores à 3 posições onde N será 3 e rodou liso sem a necessidade do leia(vet[i]) que antecedia a estrutura de condição.

Algoritmo "media_pares"

Var

   N, i, QuantidadePares, SomaPares : inteiro
   media : real
   vet : vetor[0..20] de inteiro

Inicio

   escreva("Quantos elementos terá o vetor? ")
   leia(N)

   QuantidadePares <- 0
   SomaPares <- 0

   vet[0] <- 2
   vet[1] <- 8   // valores adicionados à 3 posições do vetor
   vet[2] <- 3

   para i de 0 ate N - 1 faca
     //aqui ficava o leia(vet[i]), não há necessidade disso
      se vet[i] % 2 = 0 entao
         SomaPares <- SomaPares + vet[i]
         QuantidadePares <- QuantidadePares + 1
      fimse
   fimpara

   media <- SomaPares / QuantidadePares

   se QuantidadePares > 0 entao
      escreva("A MÉDIA DOS PARES É: ", media)
   senao
      escreva("NÃO HÁ NÚMEROS PARES")
   fimse

Fimalgoritmo

 

  • Curtir 1
  • Membro VIP
Postado

Sobre:

4 horas atrás, GustavoHCS disse:

Brother,seu problema é diferente da colega acima, não aparece nenhuma mensagem de "Invalid floating point operation"

 

Aí que tá... depende do que ele está tentando fazer... por isso que perguntei:

Em 04/01/2021 às 08:20, Simon Viegas disse:

Qual problema? Por favor, dê outros detalhes do que está ocorrendo e também envie prints do erro relatado.

 

Ou seja: uma solução para um problema vai depender de qual é o problema em si. ("O cerne está no problema, não na solução".)

 

Sobre "não aparece nenhuma mensagem". Vide:

 

image.png

 

Se só informar ímpares, vai dar pau!

 

Então, no caso eu "analisei o código e forcei o erro"... vi ali que tem uma divisão... logo, o denominador não pode ser 0 para esse contexto (computadores não funcionam muito bem com divisão por 0)... mas vejam: de um modo geral não caberia a nós "ajudantes" ficarmos caçando erros em código... ele que deveria já mais ou menos indicar. A partir do relato, partiríamos para ver o que está acontecendo :D. (Claro que vale como exercício ficar caçando.)

 

 

 

Sobre:

4 horas atrás, GustavoHCS disse:

Tu criou um vetor inteiro e está tentando ler as posições do vetor por meio do contador do ' i ', logo, durante a leitura de cada posição não há valores, não faz sentido você querer ler um vetor sem valores.

 

Como citado, ele está tentando "ler um vetor"... ou seja: "está preenchendo o vetor do programa com valores vindos do teclado". Não há problema em relação a isso... é diferente de "usar o conteúdo de um vetor não inicializado"... e mesmo assim, SEMPRE haverá valores no vetor... no caso do VisualG, vão estar automaticamente com 0 (não sei porque, mas o desenvolvedor quis assim). No caso de outras linguagens mais avançadas, podem ficar com o "lixo de memória"... daí meio que fica "obrigatório" inicializar manualmente.

 

Sobre o uso do i, não importa o que se está utilizando para "acessar o vetor". Não existe qualquer relação técnica entre o valor passado para definir a posição e o valor do conteúdo da variável. Seria algo assim:

 

vetor[<algum valor inteiro qualquer>]

 

Vamos pegar o exemplo que você citou:

 

   vet[0] <- 2
   vet[1] <- 8
   vet[2] <- 3

 

Veja:

image.png

 

Para todos os casos (propositalmente) está acessando a posição 2.

 

O VisualG não faz ideia do "o que" está sendo utilizando no parâmetro.. ele simplesmente vê se o valor desse "o que" e vai simplesmente (tentar) acessar o vetor naquela posição. Nesse caso, "qualquer coisa" que seja um valor inteiro.

 

Já no caso do código do @VictorMenezesNA, a leitura estaria tecnicamente de funcional... veja:

image.png

 

 

O possível problema geral é esse: Toda vez que não existir pares, vai dar erro. (Pois a quantidade de pares vai ser 0.)

  • Curtir 1
Postado

@Simon Viegas

 

Citação

Então, no caso eu "analisei o código e forcei o erro"... vi ali que tem uma divisão... logo, o denominador não pode ser 0 para esse contexto (computadores não funcionam muito bem com divisão por 0)... mas vejam: de um modo geral não caberia a nós "ajudantes" ficarmos caçando erros em código... ele que deveria já mais ou menos indicar. A partir do relato, partiríamos para ver o que está acontecendo . (Claro que vale como exercício ficar caçando.)

 

Havia testado várias vezes aqui e não apareceu essa mensagem em nenhum momento. 😐

 

Citação

Como citado, ele está tentando "ler um vetor"... ou seja: "está preenchendo o vetor do programa com valores vindos do teclado".

 

Sim, mas o que ele fez foi pedir para que o usuário informasse até quantas vezes a rotina seria executada e não pedia para o usuário informar mais nenhum valor, mesmo sabendo que que os valores em cada posição seja 0.

 

Citação

Sobre o uso do i, não importa o que se está utilizando para "acessar o vetor". Não existe qualquer relação técnica entre o valor passado para definir a posição e o valor do conteúdo da variável. Seria algo assim:

 

Mas o i está sendo utilizado como identificador da posição do vetor, 0, 1, 2, ...

 

Citação

Já no caso do código do @VictorMenezesNA, a leitura estaria tecnicamente de funcional... veja:

 

Sim, é funcional se utilizar o comando aleatório ou mesmo o randi(), mas no código ele mostrou seco, sem estas, apenas realizou a leitura do mesmo.

 

  • Membro VIP
Postado
2 horas atrás, GustavoHCS disse:

Havia testado várias vezes aqui e não apareceu essa mensagem em nenhum momento. 😐

 

Sim! Sim!.. acontece. Possivelmente fez testes viciados. Meio que precisa enxergar as possibilidades gerais. Tipo: com 0 números; só pares; só ímpares; só um número; números negativos etc.

 

No meu caso, pelo erro, eu já imaginava que era alguma divisão por 0 em algum momento. (Ou poderia ser um erro no VisualG da máquina dele.)

 

 

 

Sobre:

2 horas atrás, GustavoHCS disse:

Sim, mas o que ele fez foi pedir para que o usuário informasse até quantas vezes a rotina seria executada e não pedia para o usuário informar mais nenhum valor, mesmo sabendo que que os valores em cada posição seja 0.

 

Em poucas palavras: se será substituído, não importa o que tinha antes.

 

Tanto que o vetor nem precisa ser inicializado para o contexto. O que tem lá na variável não está fazendo parte da lógica do algoritmo... simplesmente o computador irá substituindo para novos valores. Ter um "monte de zeros" é apenas uma característica do VisualG, ele automaticamente se dar o trabalho de fazer isso.

 

 

Veja que está, sim, lendo:

 

 

image.png

 

Ah! repare que QuantidadePares e SomaPares estão sendo inicializados logo acima... no VisualG, como é para ficar com 0, nem precisava! Mas, como boa prática, é recomendado inicializar manualmente, pois fica mais semântico... já as "variáveis" do vetor não precisariam mesmo, pois não importa o que está lá... já que simplesmente serão substituídos.

 

 

 

Sobre:

2 horas atrás, GustavoHCS disse:

Mas o i está sendo utilizado como identificador da posição do vetor, 0, 1, 2, ...

 

O i é uma variável qualquer. Poderia chamar de letra que iria funcionar da mesma forma. Usa i, j, k etc, seria apenas uma convenção/padrão. Qualquer nomenclatura (válida) iria funcionar.

 

 

 

Sobre:

2 horas atrás, GustavoHCS disse:

Sim, é funcional se utilizar o comando aleatório ou mesmo o randi(), mas no código ele mostrou seco, sem estas, apenas realizou a leitura do mesmo.

 

Nops! Segue um teste com o código original (apenas copiei, colei e rodei) :

 

image.png

 

Ou seja: o ALEATORIO serve apenas para não precisar ficar digitando.

 

 

 

 

Uma outra pergunta que pode surgir é: "ué? para que está utilizando vetores?". Aí já outro problema.. rs.

 

Postado
Citação

O i é uma variável qualquer. Poderia chamar de letra que iria funcionar da mesma forma. Usa i, j, k etc, seria apenas uma convenção/padrão. Qualquer nomenclatura (válida) iria funcionar.

 

Eu sei que poderia ser qualquer coisa, não estou me referindo ao nome da variável, mas à função dela diante da rotina.

 

Citação

Nops! Segue um teste com o código original (apenas copiei, colei e rodei) :

 

Aqui original apareceu este erro...

 

adscacs.png

 

  • Membro VIP
Postado

Sobre:

2 horas atrás, GustavoHCS disse:

Eu sei que poderia ser qualquer coisa, não estou me referindo ao nome da variável, mas à função dela diante da rotina.

 

A função da variável seria para posicionar o vetor na posição desejada ("qualquer coisa" que seja do tipo inteiro serviria). A estrutura está correta. O vetor começa vazio* (com valores padrões), daí é preciso em algum momento ler o dado desejado e inserir na posição correspondente.

 

Perceba:

Em 05/01/2021 às 06:59, GustavoHCS disse:
   escreva("Quantos elementos terá o vetor? ")
   leia(N)

   QuantidadePares <- 0
   SomaPares <- 0

   vet[0] <- 2
   vet[1] <- 8   // valores adicionados à 3 posições do vetor
   vet[2] <- 3

   para i de 0 ate N - 1 faca
     //aqui ficava o leia(vet[i]), não há necessidade disso
      se vet[i] % 2 = 0 entao
         SomaPares <- SomaPares + vet[i]
         QuantidadePares <- QuantidadePares + 1
      fimse
   fimpara

 

Se está "definindo os valores do vetor no próprio código", para que está perguntando quantos elementos terá no vetor? A proposto do algoritmo seria preencher o vetor lendo os dados do usuário.

 

A estrutura original está "correta":

Em 03/01/2021 às 15:44, VictorMenezesNA disse:
   para i de 0 ate N - 1 faca
      leia(vet[i])
      se vet[i] % 2 = 0 entao
         SomaPares <- SomaPares + vet[i]
         QuantidadePares <- QuantidadePares + 1
      fimse
   fimpara

 

 

Segue um teste na versão 2.5 do VisualG:

image.png

 

Apenas copiei, colei e rodei...

 

Experimente reinstalar o VisualG ou aproveite para atualizar para a versão mais estável... a 3.0.6.5. Exemplo de fonte para download:

https://baixe.net/download/4313/visualg/

 

 

Adendo 1:

Sobre:

14 horas atrás, Simon Viegas disse:

Uma outra pergunta que pode surgir é: "ué? para que está utilizando vetores?". Aí já outro problema.. rs.

 

Os dados estão sendo armazenados e logo verificados... posteriormente o vetor não está sendo utilizado para algo... bastaria uma variável simples.

 

Exemplo:

image.png

 

Utilizando vetores, faria mais sentido se primeiro lesse os dados (num para), e posteriormente faria as verificações (outro para).

 

Adendo 2: o problema original de divisão por zero ainda existe e precisaria ser tratado. 

Postado

@Simon Viegas

 

Citação

Se está "definindo os valores do vetor no próprio código", para que está perguntando quantos elementos terá no vetor? A proposto do algoritmo seria preencher o vetor lendo os dados do usuário.

 

Porque isso foi mero exemplo de que funcionava atribuindo os valores, não significava que era, de fato, a resposta.

  • Curtir 1
  • Membro VIP
Postado
4 horas atrás, GustavoHCS disse:

@Simon Viegas

 

 

Porque isso foi mero exemplo de que funcionava atribuindo os valores, não significava que era, de fato, a resposta.

 

Perfeito!

 

 

Sobre:

23 horas atrás, Simon Viegas disse:

Experimente reinstalar o VisualG ou aproveite para atualizar para a versão mais estável... a 3.0.6.5. Exemplo de fonte para download:

https://baixe.net/download/4313/visualg/

 

Você chegou a reinstalar o VisualG ou atualizar para ver se o erro para?

 

ADENDO:

Fiz novos testes no VisualG 2.X... nos testes, se não informar um valor, dá erro mesmo. Veja:

 

image.png

 

Digitei 3, depois apenas dei um ENTER... Não seria necessariamente um bug, pelo contrário, faz mais sentido!!! O valor que vem do teclado geralmente é considerado como caractere mesmo... daí o VisualG é que "inventa" de tentar converter automaticamente para inteiro, nesse caso...

 

 

 

 

Esse problema NÃO ocorre na versão 3.0.6.5. Exemplo:

image.png

 

Aqui, ao dar ENTER, o VisualG está considerando como sendo um inteiro com valor 0 (zero). Já no VisualG 2.X, ele deve considerar como um caractere vazio (""). Aí, dá erro pois inteiro não comporta caractere.

 

 

PS: 

Já no Pascal, "pai" do VisualG, o programa solicita novamente que insira um dados. Ex.:

image.png

 

 

RESUMINDO:

VisualG 2.X = considera um ENTER como sendo "" (um caractere "vazio");

VisualG 3.X = considera um ENTER como um 0;

Pascal = entende um ENTER como "pular uma linha" e a leitura do caractere é ignorada e solicita ler novamente.

 

*e isso pode mudar de subversão para subversão. Uma loucura. :D

 

 

 

 

 

Para ser um pouco mais objetivo em relação ao problema do @VictorMenezesNA, segue um exemplo de como poderia ficar:

 

algoritmo "media_pares"
var
   n, i: inteiro
   quantidaDePares, somaPares: inteiro
   media: real
   vet: vetor[0..20] de inteiro

inicio
   escreva("Quantos elementos terá o vetor? ")
   leia(n)

   quantidaDePares <- 0
   somaPares <- 0

   //preenche o vetor
   para i de 0 ate n-1 faca
      escreva (i+1:1, "º número: ")
      leia(vet[i])
   fimPara

   //analisa o vetor
   para i de 0 ate n-1 faca
      se vet[i] % 2 = 0 entao
         somaPares <- omaPares + vet[i]
         quantidaDePares <- quantidaDePares + 1
      fimSe
   fimPara

   se quantidaDePares > 0 entao
      media <- somaPares / quantidaDePares
      escreva("A MÉDIA DOS PARES É: ", media:1:3)
   senao
      escreva("NÃO HÁ NÚMEROS PARES")
   fimse
fimAlgoritmo

 

Observem que o escreva() serve APENAS para ter uma interface mais amigável, mas ela NÃO tem qualquer relação técnica com o leia(). É importante saber diferenciar uma coisa da outra.

 

image.png

 

São comandos totalmente distintos e independentes. Daí..... para tentar o programa fazer algum sentido para quem está usando (o usuário), o programador combina um e outro de forma que fiquem semânticos entre si. Mas NÃO é obrigatório ter um escreva() antes do leia() para funcionar.  :)

 

 

 

Por fim, apenas uma demonstração como poderia inicializar o vetor:

image.png

 

Mas, tem uns detalhes:

  1. se for para inicializar com 0, não precisa. O VisualG já faz isso para gente;
  2. como o vetor está sendo utilizado para "ler do teclado", não precisa inicializar de qualquer forma, pois não importa o que tem lá. Os valores serão substituídos;
  3. já, por exemplo, para somaPares, é a mesma coisa: como começa com 0, não precisava inicializar pois já está com 0, entretanto, seria uma boa prática fazer isso, pois é mais comum em linguagens de programação mais avançadas, as variáveis não serem auto-inicializadas, daí, se tiver algum valor que não seja 0, iria dar problema. (A soma não ia calcular corretamente.)

Ao rodar, todas as variáveis já são zeradas aqui no VisualG:

image.png

 

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

×
×
  • Criar novo...