Ir ao conteúdo
  • Cadastre-se

VisualG Problema com visualg dando "Invalid floating point operation"


Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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
Link para o comentário
Compartilhar em outros sites

  • 3 meses depois...

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
Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...

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

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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

Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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
Link para o comentário
Compartilhar em outros sites

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

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
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.

 

Link para o comentário
Compartilhar em outros sites

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

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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. 

Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
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
Link para o comentário
Compartilhar em outros sites

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