NUMEROS INTEIROS

IGNORANTE 17/04/2007 15:26:09
#212340
Olá

Tenho um problema estranho no seguinte código:

x = ModZum
If Int(x) = x Then
Resultado = x
Else
Resultado = "sqr (" & ZumReal ^ 2 + ZumImag ^ 2 & ")"
End If

Notem que ModZum = sqr(ZumReal ^ 2 + ZumImag ^ 2)

Por exemplo, se ZumReal=2 e ZumImag=3, obtenho o resultado sqr(13), que é o correcto.
Porém, se for ZumReal=4 e ZumImag=3, obtenho o resultado sqr(25), quando deveria obter 5.

Acho que não há erro no código. Será que há alguma coisa estranha com o Int(x)?

Alguém me pode ajudar?

Obrigado desde já.
USUARIO.EXCLUIDOS 17/04/2007 15:31:27
#212347


Como 5? Ta doido? ehuehuehu 4^2 = 16 ... 3^2 = 9 Logo, 16 + 9 = 25..ta certo...no mesmo exemplo que vc deu acima..

o resultado da srt(25) que seria 5..

ou eu to chapando?
IGNORANTE 17/04/2007 15:57:35
#212361
Não estou doido não!

Você é que não percebeu o problema.
é óbvio que o resultado está certo, mas não aparece escrito como eu quero. Eu quero que, em vez de escrever sqr(25), escreva 5.
Quero que isso aconteça sempre que a raiz seja exacta, só usando sqr quando não o for.
De qualquer modo, obrigado.

Ignorante (mas não tanto...)
USUARIO.EXCLUIDOS 17/04/2007 16:17:35
#212371
Sei não cara, comigo deu certo, olha como testei:

ZumReal = 4
ZumImag = 3
ModZum = Sqr((ZumReal ^ 2) + (ZumImag ^ 2))
x = ModZum
If Int(x) = x Then
Resultado = x
Else
Resultado = "Sqr(" & ((ZumReal ^ 2) + (ZumImag ^ 2)) & ")"
End If
MsgBox Resultado


Mostra "5"
IGNORANTE 17/04/2007 16:56:07
#212384
Será do meu computador?
Continua a dar sqr(25), mesmo escrevendo o código exactamente igual ao que mandaste (eu não tenho as duas primeiras linhas porque esses valores vêm de uma textbox.

Que hei-de fazer?
USUARIO.EXCLUIDOS 17/04/2007 19:10:33
#212410
Remova a concatenação de strings!
Troque
 Resultado = "sqr (" & ZumReal ^ 2 + ZumImag ^ 2 & ")"


Por Resultado = Sqr( ZumReal ^ 2 + ZumImag ^ 2 )
USUARIO.EXCLUIDOS 17/04/2007 19:14:08
#212411

Declara uma variável como numérica e joga o resultado nela
IGNORANTE 17/04/2007 19:17:44
#212412
Assim, quando o radical não for exacto, dá o seu valor em dízima e eu quero que dê mostrando que é um radical.
Eu pretendo que os resultados apareçam na forma, por exemplo,

7 em vez de sqr(49)

sqr(56) em vez do seu valor em dízima.

Obrigado.
TAMANINI 18/04/2007 08:32:36
#212460
Resposta escolhida
Faz igual o Matioli fez, só defini algumas variáveis como string, exemplo:
Private Sub Form_Load()
Dim ZumReal As Integer
Dim ZumImag As Integer
Dim ModZum As String
Dim x As String
Dim Resultado As String

ZumReal = 2
ZumImag = 3
ModZum = Sqr((ZumReal ^ 2) + (ZumImag ^ 2))
x = ModZum
If Int(x) = x Then
Resultado = x
Else
Resultado = "Sqr(" & ((ZumReal ^ 2) + (ZumImag ^ 2)) & ")"
End If
MsgBox Resultado
End Sub

IGNORANTE 18/04/2007 10:20:49
#212485
Resultou!
Tive de fazer pequenas modificações porque algumas variáveis estavam em textbox e não podia defini-las, mas agora tudo bem.
Muitíssimo obrigado ao Tamanini e a todos os que me ajudaram.
Tópico encerrado , respostas não são mais permitidas