NUMERO INTEIRO - NUMERO FRACIONARIO

RAS85 01/03/2012 10:01:38
#396138
Bom Dia companheiros do VBMania!
Estou com dificuldade em elaborar um código e espero que possam me ajudar.

Tenho um programa de avaliação da linearidade de dados, no qual o usuário insere os dados de uma função f(x) de acordo com a foto em anexo.
Nessa etapa do cálculo, o usuário declara os dados de entrada [Ô]Valor do Coeficiente Angular ([txt-color=#e80000]a[/txt-color])[Ô]; [Ô]Valor do Coeficiente Linear ([txt-color=#0000f0]b[/txt-color])[Ô] (são dados que forma a equação f(x) = [txt-color=#e80000]a[/txt-color]X + [txt-color=#0000f0]b[/txt-color]) e o início e fim da faixa de trabalho. Ao clicar em calcular, no listbox aparecem todos os valores de y (y = f(x)) para cada valor de x (que começa no valor colocado como início da faixa). Porém, o valor de X só é simulado como número inteiro (Por exemplo, se o início da faixa for 10; o programa simulará os valores de y pra X = 10; X = 11; X = 12....e assim, secessivamente, até o valor colocado como fim da faixa). Gostaria que ao invés disso, ele estipulasse os valores em números decimais com 3 casas, por exemplo, Inicio da Faixa = 1; Fim da Faixa = 5 ---> Valores estipulados: X = 1,001; X = 1,002; X = 1,003 e assim por diante.

O código do botão calcular segue abaixo:


Private Sub bntCalcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bntCalcular.Click
Dim strValorX, strValorY, strDadosEquacao As String
Dim intCoeficienteA, intCoeficienteB, intInicio, intFim, intValorX, intValorY As Decimal

intCoeficienteA = numCoeficienteA.Text
intCoeficienteB = numCoeficienteB.Text

intInicio = Val(Trim(txtInicioFaixa.Text))
intFim = Val(Trim(txtFimFaixa.Text))

lstDados.Items.Clear()
lstDados.Items.Add([Ô] Valor X | Valor Y[Ô])

For intValorX = intInicio To intFim
intValorY = (intCoeficienteA * intValorX) + intCoeficienteB
strValorX = Microsoft.VisualBasic.Right([Ô] [Ô] + Trim(Str(intValorX)), 7)
strValorY = Microsoft.VisualBasic.Right([Ô] [Ô] + Trim(Str(intValorY)), 7)
strDadosEquacao = [Ô] [Ô] + strValorX + [Ô] | [Ô] + strValorY
lstDados.Items.Add(strDadosEquacao)
Next
End Sub

Tudo que tentei até agora deu errado!
Espero que possam me ajudar!

Desde já agradeço.
JONATHANSTECKER 01/03/2012 11:04:45
#396153
Resposta escolhida
Você já tentou alterar o Step no For?
Step - Especifica o valor de incremento do contador. O valor padrão é de uma unidade.
    Private Sub bntCalcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bntCalcular.Click
Dim strValorX, strValorY, strDadosEquacao As String
Dim intCoeficienteA, intCoeficienteB, intInicio, intFim, intValorX, intValorY As Decimal

intCoeficienteA = numCoeficienteA.Text
intCoeficienteB = numCoeficienteB.Text

intInicio = Val(Trim(txtInicioFaixa.Text))
intFim = Val(Trim(txtFimFaixa.Text))

lstDados.Items.Clear()
lstDados.Items.Add([Ô] Valor X | Valor Y[Ô])

For intValorX = intInicio To intFim Step 0.001 [ô] <--- Defina o valor de incremento.
intValorY = (intCoeficienteA * intValorX) + intCoeficienteB
strValorX = Microsoft.VisualBasic.Right([Ô] [Ô] + Trim(Str(intValorX)), 7)
strValorY = Microsoft.VisualBasic.Right([Ô] [Ô] + Trim(Str(intValorY)), 7)
strDadosEquacao = [Ô] [Ô] + strValorX + [Ô] | [Ô] + strValorY
lstDados.Items.Add(strDadosEquacao)
Next
End Sub
RAS85 02/03/2012 09:39:46
#396244
Bom dia companheiros!

O step no for como OCELOT e JONATHANSTECKER indicaram funcionou!
Porém, como o LVFIOROT, ele não está reconhecendo o nem ponto e nem virgula como separador na conversão para númerico!
Como eu posso fazer pra que ele passe a reconhecer dessa forma?

Outro problema foi que a partir do momento que coloquei o step no for, assim como vocês indicaram, o gráfico passou a não ser gerado mais.
Neste caso, eu deveria colocar o step no gráfico tb???
Segue abaixo o código do gráfico!

Valeu mesmo a atenção pessoal!


Dim AreaGrafica As System.Drawing.Graphics
Dim intCoeficienteA, intCoeficienteB, intInicio, intFim, intContador, intCentroX, intCentroY As Decimal
Dim sngValorX1, sngValorY1, sngValorX2, sngValorY2 As Decimal

intInicio = Val(Trim(txtInicioFaixa.Text))
intFim = Val(Trim(txtFimFaixa.text))

AreaGrafica = pnlGrafico.CreateGraphics
AreaGrafica.Clear(Color.White)

intCentroX = pnlGrafico.Width / 2
intCentroY = pnlGrafico.Height / 2

AreaGrafica.DrawRectangle(Pens.Black, 1, 1, pnlGrafico.Width - 8, pnlGrafico.Height - 8)
AreaGrafica.DrawRectangle(Pens.Black, 5, 5, pnlGrafico.Width - 15, pnlGrafico.Height - 15)
AreaGrafica.DrawLine(Pens.Blue, 5, intCentroY, pnlGrafico.Width - 12, intCentroY)
AreaGrafica.DrawLine(Pens.Blue, intCentroX, 5, intCentroX, pnlGrafico.Height - 12)

intCoeficienteA = numCoeficienteA.Text
intCoeficienteB = numCoeficienteB.Text

For intContador = intInicio To intFim
sngValorX1 = intContador
sngValorY1 = (intCoeficienteA * sngValorX1) + intCoeficienteB
sngValorX2 = sngValorX1 * 1.2
sngValorY2 = sngValorY1 * 1.2
AreaGrafica.DrawLine(Pens.Red, intCentroX + sngValorX1, intCentroY - sngValorY1, intCentroX + sngValorX2, intCentroY - sngValorY2)
Next
AreaGrafica.Dispose()
End Sub
Tópico encerrado , respostas não são mais permitidas