AYUDA CON TIPOS DE DATOS POR FAVOR

sapito21
22 de Abril del 2010
Buenos dias, el problema q tengo es q al intentar asignarle a una variable el retorno de una funcion me salta un error que dice:

Demasiados argumentos para \'Public ReadOnly Default Property Chars(index As Integer) As Char\'.

La funcion es tipoTriangulo()
desde ya agradezco si alguien me puede ayudar, aca les dejo el codigo tal cual esta antes de tratar de compilarlo:

Module Module1
Sub Main()
analisisTriangulo()
frenarPantalla()
End Sub
Sub analisisTriangulo()
Dim l1, l2, l3 As Double
Dim resultado As Boolean
Dim perim As Double
Dim tipoTriangulo As String
tipoTriangulo = tipoTriangulo(l1, l2, l3)
perim = perimetroTriangulo(l1, l2, l3)
Console.WriteLine("ingrese la longitudo de los 3 lados de un triangulo")
Console.WriteLine("ingrese el primer lado")
l1 = Console.ReadLine()
Console.WriteLine("ingrese el segundo lado")
l2 = Console.ReadLine()
Console.WriteLine("ingrese el tercer lado")
l3 = Console.ReadLine()
If isTriangulo(l1, l2, l3) Then
Console.WriteLine("dicho triangulo es del tipo " & tipoTriangulo)
Console.WriteLine("y su perimetro es" & perim)
Else
Console.WriteLine("el triangulo de lados " & l1 & " " & l2 & " " & l3 & " no existe")
End If
End Sub
Function isTriangulo(ByVal lado1 As Double, ByVal lado2 As Double, ByVal lado3 As Double) As Boolean
Dim resultado As Boolean
If ((lado1 > 0) And (lado2 > 0) And (lado3 > 0)) Then
If ((lado1 < lado2 + lado3) And (lado2 < lado1 + lado3) And (lado3 < lado1 + lado2)) Then
resultado = True
Else
resultado = False
End If
Else
resultado = False
End If
Return resultado
End Function
Function tipoTriangulo(ByVal lado1 As Double, ByVal lado2 As Double, ByVal lado3 As Double) As String
Dim tipo As String = ""
If ((lado1 = lado2) And (lado1 = lado3)) Then
tipo = "equilatero"
Else
If ((lado1 = lado2) Or (lado1 = lado3) Or (lado2 = lado3)) Then
tipo = "isosceles"
Else
tipo = "escaleno"
End If
End If
Return tipo
End Function
Function perimetroTriangulo(ByVal lado1 As Double, ByVal lado2 As Double, ByVal lado3 As Double) As Double
Dim perimetro As Double
perimetro = lado1 + lado2 + lado3
Return perimetro
End Function
Sub frenarPantalla()
Console.WriteLine("presione cualquier tecla para salir del programa")
Console.ReadKey()
End Sub
End Module

Agradeceria mucho una solucion sin cambiar mucho codigo ya que me parece bastante razonable como lo hice

sapito21

Leonardo
20 de Mayo del 2010
tipoTriangulo = tipoTriangulo(l1, l2, l3)

Has usado el mismo nombre para una variable y para una función.

Esto es válido, pero entonces tendrás que calificar la función para acceder a ella (Module1.TipoTriangulo). Mejor cambia el nombre de la variable.

El error que te da es que estás accediendo a la funcion String.Chars(n), pero con tres argumentos en lugar de uno.