Foros del Web » Programación para mayores de 30 ;) » .NET »

Reducir codigo

Estas en el tema de Reducir codigo en el foro de .NET en Foros del Web. Buenas tardes : tengo el siguiente ejercicio: Calcular el número de elementos negativos, cero y positivos de un vector dado de 20 elementos. - Habra ...
  #1 (permalink)  
Antiguo 17/03/2015, 14:38
 
Fecha de Ingreso: marzo-2015
Ubicación: Lima
Mensajes: 4
Antigüedad: 9 años, 10 meses
Puntos: 0
Pregunta Reducir codigo

Buenas tardes :
tengo el siguiente ejercicio:
Calcular el número de elementos negativos, cero y positivos de un vector dado de 20 elementos.

- Habra alguna manera de poder reducir el siguiente codigo que he realizado para solucionar el problema que me plantean :

Private Sub boton_Click(sender As Object, e As EventArgs) Handles boton.Click
Dim number(0 To 4), vnumber, i, j As Integer
Dim cont1 As Integer = 0
Dim cont2 As Integer = 0
Dim cont3 As Integer = 0
For i = 0 To number.Length - 1
vnumber = InputBox("Ingrese Numero")
number(i) = vnumber
Next

For j = 0 To number.Length - 1
If number(j) > 0 Then
cont1 = cont1 + 1
txtpositivos.Text = cont1
txtceros.Text = cont2
txtnegativos.Text = cont3
ElseIf number(j) = 0 Then
cont2 = cont2 + 1
txtpositivos.Text = cont1
txtceros.Text = cont2
txtnegativos.Text = cont3
ElseIf number(j) < 0 Then
cont3 = cont3 + 1
txtpositivos.Text = cont1
txtceros.Text = cont2
txtnegativos.Text = cont3
End If
Next
End Sub

Esto lo hago con el fin de poder optimizar mi logico viendo que otras alternativas tiene otras personas.

Gracias por lo comentarios.

Saludos
  #2 (permalink)  
Antiguo 17/03/2015, 14:43
 
Fecha de Ingreso: marzo-2015
Ubicación: Lima
Mensajes: 4
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Reducir codigo

Por favor obvien la inconcordancia entre el enunciado que dice vector de 20 elementos y el codigo que declara un vector con 5 elementos,el objetivo principal es la forma de reducir el codigo presentado.

Agradezco de antemano sus respuestas.
Saludos.
  #3 (permalink)  
Antiguo 19/03/2015, 00:03
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 10 años
Puntos: 52
Respuesta: Reducir codigo

Lo más corto que se me ocurre es:

Código VB.Net:
Ver original
  1. Private Sub boton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
  2.     Dim count = 20
  3.     Dim numbers = Enumerable.Range(0, count) _
  4.                             .Select(Function(x) CInt(InputBox("Ingrese un numero"))) _
  5.                             .ToArray()
  6.  
  7.     txtCeros.Text = number.Count(Function(x) x = 0)
  8.     txtNegativos.Text = number.Count(Function(x) x < 0)
  9.     txtPositivos.Text = number.Count(Function(x) x > 0)
  10.  
  11. End Sub

Aunque esto es muy poco robusto ya que si el usuario ingresa un texto que no sea numérico va a dar error en tiempo de ejecución al tratar de convertirlo a Integer mediante la función Cint().

Lo más logico sería filtrar de la lista solamente aquellas cadenas de texto que sean convertibles a enteros, usando la funcion IsNumeric() de Visual Basic.Net:

Código VB.Net:
Ver original
  1. Private Sub boton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
  2.     Dim count = 20
  3.     Dim number = Enumerable.Range(0, count) _
  4.                            .Select(Function(x) InputBox("Ingrese un numero")) _
  5.                            .Where(Function(x) IsNumeric(x)) _
  6.                            .Select(Function(x) CInt(x)) _
  7.                            .ToArray()
  8.  
  9.     txtCeros.Text = number.Count(Function(x) x = 0)
  10.     txtNegativos.Text = number.Count(Function(x) x < 0)
  11.     txtPositivos.Text = number.Count(Function(x) x > 0)
  12.  
  13. End Sub

Última edición por agleiva; 19/03/2015 a las 00:20

Etiquetas: reducir
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:17.