NUMERO INTEIRO - NUMERO FRACIONARIO
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.
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.
Você já tentou alterar o Step no For?
Step - Especifica o valor de incremento do contador. O valor padrão é de uma unidade.
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
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
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