2010-06-07 3 views
0

J'ai un projet à faire en Visual Basic. Mon problème est que le résultat est toujours faux (ex: au lieu de 2011 il donne 2000). Et je ne peux pas définir comme Unité désirée l'Inch (1) ou les pieds (3), cela donne l'erreur Infinity. Et si je mets comme unité originale et désirée le pouce (1), le résultat est "Pas un nombre".Aide tableau requise pour l'application de conversion d'unités

Voici le code que j'ai fait jusqu'ici. Le projet concerne les tableaux. Toute aide appréciée.

Public Class Form1

Private Sub btnConvert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConvert.Click 

    Dim original(9) As Long 
    Dim desired(9) As Long 
    Dim a As Integer 
    Dim o As Integer 
    Dim d As Integer 
    Dim inch As Long, fathom As Long, furlong As Long, kilometer As Long 
    Dim meter As Long, miles As Long, rod As Long, yard As Long, feet As Long 

    a = Val(Input3.Text) 
    o = Val(Input1.Text) 
    d = Val(Input2.Text) 

    inch& = 0.0833 
    rod& = 16.5 
    yard& = 3 
    furlong& = 660 
    meter& = 3.28155 
    kilometer& = 3281.5 
    fathom& = 6 
    miles& = 5280 

    original(1) = inch 
    original(2) = fathom 
    original(3) = feet 
    original(4) = furlong 
    original(5) = kilometer 
    original(6) = meter 
    original(7) = miles 
    original(8) = rod 
    original(9) = yard 

    desired(1) = inch 
    desired(2) = fathom 
    desired(3) = feet 
    desired(4) = furlong 
    desired(5) = kilometer 
    desired(6) = meter 
    desired(7) = miles 
    desired(8) = rod 
    desired(9) = yard 

    If o < 1 Or o > 9 Or d < 1 Or d > 9 Then 
     MessageBox.Show("Units must range from 1-9.", "Error", _ 
     MessageBoxButtons.OK, _ 
     MessageBoxIcon.Information) 
     Return 
    End If 

    Output.Text = (a * original(o))/desired(d) 

End Sub 

End Class

Répondre

1

Geia sou Manoli,

habituellement les tableaux sont basés zéro. De plus, les pouces, les mètres, etc. doivent être déclarés comme doubles, pas trop longs.

Ce code fera la convertion corectly

Private Sub btnConvert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConvert.Click 
    Dim original(8) As Double 
    Dim desired(8) As Double 
    Dim a As Integer 
    Dim o As Integer 
    Dim d As Integer 
    Dim inch As Double, fathom As Long, furlong As Double, kilometer As Double 
    Dim meter As Double, miles As Long, rod As Double, yard As Double, feet As Long 

    a = CInt(Val(Input3.Text)) 
    o = CInt(Val(Input1.Text)) 
    d = CInt(Val(Input2.Text)) 

    inch = 0.0833333333 
    rod = 16.5 
    yard = 3 
    furlong = 660 
    meter = 3.2808399 
    kilometer = 3280.8399 
    fathom = 6 
    miles = 5280 

    original(0) = inch 
    original(1) = fathom 
    original(2) = feet 
    original(3) = furlong 
    original(4) = kilometer 
    original(5) = meter 
    original(6) = miles 
    original(7) = rod 
    original(8) = yard 

    desired(0) = inch 
    desired(1) = fathom 
    desired(2) = feet 
    desired(3) = furlong 
    desired(4) = kilometer 
    desired(5) = meter 
    desired(6) = miles 
    desired(7) = rod 
    desired(8) = yard 

    If o < 0 Or o > 8 Or d < 0 Or d > 8 Then 
     MessageBox.Show("Units must range from 0-8.", "Error", _ 
     MessageBoxButtons.OK, _ 
     MessageBoxIcon.Information) 
     Return 
    End If 

    Output.Text = CStr((a * original(o))/desired(d)) 

End Sub 
+0

De plus, vous ne pouvez utiliser que la matrice d'origine. Le tableau désiré n'est pas nécessaire. Par exemple: Output.Text = CStr ((a * original (o))/original (d)) –

0

Merci pour la réponse!

Maintenant, cela fonctionne parfaitement. J'étais sur le point de poser une question sur un autre problème, mais je l'ai compris.

output.text = CStr ((a * initial (o))/désiré (d))

doit être converti en

output.text = CStr ((a * original (o - 1))/désiré (d - 1))

Euxaristw!