elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Pasar programa de Ciclo if a for (cuadro magico)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pasar programa de Ciclo if a for (cuadro magico)  (Leído 2,177 veces)
ellandax

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Pasar programa de Ciclo if a for (cuadro magico)
« en: 19 Noviembre 2013, 04:27 am »

Bueno como primero este es un codigo que elabore en clase de un cuadro magico de 1 a 9. 3x3

Como puedo pasarlo a ciclo for ?



gracias :D




Código
  1. Public Class Form1
  2. Dim a(2, 2) As Integer
  3. Dim sum1, sum2, sum3, sum4, sum5, sum6, sum7, sum8 As Integer
  4. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
  5. a(0, 0) = TextBox1.Text
  6. a(0, 1) = TextBox2.Text
  7. a(0, 2) = TextBox3.Text
  8. a(1, 0) = TextBox4.Text
  9. a(1, 1) = TextBox5.Text
  10. a(1, 2) = TextBox6.Text
  11. a(2, 0) = TextBox7.Text
  12. a(2, 1) = TextBox8.Text
  13. a(2, 2) = TextBox9.Text
  14. sum1 = a(0, 0) + a(0, 1) + a(0, 2)
  15. sum2 = a(1, 0) + a(1, 1) + a(1, 2)
  16. sum3 = a(2, 0) + a(2, 1) + a(2, 2)
  17. sum4 = a(0, 0) + a(1, 0) + a(2, 0)
  18. sum5 = a(0, 1) + a(1, 1) + a(2, 1)
  19. sum6 = a(0, 2) + a(1, 2) + a(2, 2)
  20. sum7 = a(0, 0) + a(1, 1) + a(2, 2)
  21. sum8 = a(0, 2) + a(1, 1) + a(2, 0)
  22.  
  23. If sum1 = 15 And sum2 = 15 And sum3 = 15 And sum4 = 15 And sum5 = 15 And sum6 = 15 And sum7 = 15 And sum8 = 15 Then
  24. If a(0, 0) <> a(0, 1) Or a(0, 0) <> a(0, 2) Or a(0, 0) <> a(1, 0) Or a(0, 0) <> a(1, 1) Or a(0, 0) <> a(1, 2) Or a(0, 0) <> a(2, 0) Or a(0, 0) <> a(2, 1) Or a(0, 0) <> a(2, 2) Then
  25. If a(0, 1) <> a(0, 0) Or a(0, 1) <> a(0, 2) Or a(0, 1) <> a(1, 0) Or a(0, 1) <> a(1, 1) Or a(0, 1) <> a(1, 2) Or a(0, 1) <> a(2, 0) Or a(0, 1) <> a(2, 1) Or a(0, 1) <> a(2, 2) Then
  26. If a(0, 2) <> a(0, 0) Or a(0, 1) <> a(0, 2) Or a(0, 2) <> a(1, 0) Or a(0, 2) <> a(1, 1) Or a(0, 2) <> a(1, 2) Or a(0, 2) <> a(2, 0) Or a(0, 2) <> a(2, 1) Or a(0, 2) <> a(2, 2) Then
  27. If a(1, 0) <> a(0, 0) Or a(0, 1) <> a(1, 0) Or a(0, 2) <> a(1, 0) Or a(1, 0) <> a(1, 1) Or a(1, 0) <> a(1, 2) Or a(1, 0) <> a(2, 0) Or a(1, 0) <> a(2, 1) Or a(1, 0) <> a(2, 2) Then
  28. If a(1, 1) <> a(0, 0) Or a(0, 1) <> a(1, 1) Or a(0, 2) <> a(1, 1) Or a(1, 0) <> a(1, 1) Or a(1, 1) <> a(1, 2) Or a(1, 1) <> a(2, 0) Or a(1, 1) <> a(2, 1) Or a(1, 1) <> a(2, 2) Then
  29. If a(1, 2) <> a(0, 0) Or a(0, 1) <> a(1, 2) Or a(0, 2) <> a(1, 2) Or a(1, 0) <> a(1, 2) Or a(1, 1) <> a(1, 2) Or a(1, 2) <> a(2, 0) Or a(1, 2) <> a(2, 1) Or a(1, 2) <> a(2, 2) Then
  30. If a(2, 0) <> a(0, 0) Or a(0, 1) <> a(2, 0) Or a(0, 2) <> a(2, 0) Or a(1, 0) <> a(2, 0) Or a(1, 1) <> a(2, 0) Or a(1, 2) <> a(2, 0) Or a(2, 0) <> a(2, 1) Or a(2, 0) <> a(2, 2) Then
  31. If a(2, 1) <> a(0, 0) Or a(0, 1) <> a(2, 1) Or a(0, 2) <> a(2, 1) Or a(1, 0) <> a(2, 1) Or a(1, 1) <> a(2, 1) Or a(1, 2) <> a(2, 1) Or a(2, 0) <> a(2, 1) Or a(2, 1) <> a(2, 2) Then
  32. If a(2, 2) <> a(0, 0) Or a(0, 1) <> a(2, 2) Or a(0, 2) <> a(2, 2) Or a(1, 0) <> a(2, 2) Or a(1, 1) <> a(2, 2) Or a(1, 2) <> a(2, 2) Or a(2, 0) <> a(2, 2) Or a(2, 1) <> a(2, 2) Then
  33. MsgBox("es un cuadro m&#225;gico")
  34. End If
  35. Else
  36. MsgBox("no es un cuadro m&#225;gico hay numeros repetidos")
  37. End If
  38. Else
  39. MsgBox("no es un cuadro m&#225;gico hay numeros repetidos")
  40. End If
  41. Else
  42. MsgBox("no es un cuadro m&#225;gico hay numeros repetidos")
  43.  
  44. End If
  45. Else
  46. MsgBox("no es un cuadro m&#225;gico hay numeros repetidos")
  47.  
  48. End If
  49. Else
  50. MsgBox("no es un cuadro m&#225;gico hay numeros repetidos")
  51. End If
  52. Else
  53. MsgBox("no es un cuadro m&#225;gico hay numeros repetidos")
  54. End If
  55.  
  56. Else
  57. MsgBox("no es un cuadro m&#225;gico hay numeros repetidos")
  58. End If
  59.  
  60.  
  61. Else
  62. MsgBox("no es un cuadro m&#225;gico hay numeros repetidos")
  63.  
  64. End If
  65. Else
  66. If a(0, 0) <> a(0, 1) Or a(0, 0) <> a(0, 2) Or a(0, 0) <> a(1, 0) Or a(0, 0) <> a(1, 1) Or a(0, 0) <> a(1, 2) Or a(0, 0) <> a(2, 0) Or a(0, 0) <> a(2, 1) Or a(0, 0) <> a(2, 2) Then
  67. If a(0, 1) <> a(0, 0) Or a(0, 1) <> a(0, 2) Or a(0, 1) <> a(1, 0) Or a(0, 1) <> a(1, 1) Or a(0, 1) <> a(1, 2) Or a(0, 1) <> a(2, 0) Or a(0, 1) <> a(2, 1) Or a(0, 1) <> a(2, 2) Then
  68. If a(0, 2) <> a(0, 0) Or a(0, 1) <> a(0, 2) Or a(0, 2) <> a(1, 0) Or a(0, 2) <> a(1, 1) Or a(0, 2) <> a(1, 2) Or a(0, 2) <> a(2, 0) Or a(0, 2) <> a(2, 1) Or a(0, 2) <> a(2, 2) Then
  69. If a(1, 0) <> a(0, 0) Or a(0, 1) <> a(1, 0) Or a(0, 2) <> a(1, 0) Or a(1, 0) <> a(1, 1) Or a(1, 0) <> a(1, 2) Or a(1, 0) <> a(2, 0) Or a(1, 0) <> a(2, 1) Or a(1, 0) <> a(2, 2) Then
  70. If a(1, 1) <> a(0, 0) Or a(0, 1) <> a(1, 1) Or a(0, 2) <> a(1, 1) Or a(1, 0) <> a(1, 1) Or a(1, 1) <> a(1, 2) Or a(1, 1) <> a(2, 0) Or a(1, 1) <> a(2, 1) Or a(1, 1) <> a(2, 2) Then
  71. If a(1, 2) <> a(0, 0) Or a(0, 1) <> a(1, 2) Or a(0, 2) <> a(1, 2) Or a(1, 0) <> a(1, 2) Or a(1, 1) <> a(1, 2) Or a(1, 2) <> a(2, 0) Or a(1, 2) <> a(2, 1) Or a(1, 2) <> a(2, 2) Then
  72. If a(2, 0) <> a(0, 0) Or a(0, 1) <> a(2, 0) Or a(0, 2) <> a(2, 0) Or a(1, 0) <> a(2, 0) Or a(1, 1) <> a(2, 0) Or a(1, 2) <> a(2, 0) Or a(2, 0) <> a(2, 1) Or a(2, 0) <> a(2, 2) Then
  73. If a(2, 1) <> a(0, 0) Or a(0, 1) <> a(2, 1) Or a(0, 2) <> a(2, 1) Or a(1, 0) <> a(2, 1) Or a(1, 1) <> a(2, 1) Or a(1, 2) <> a(2, 1) Or a(2, 0) <> a(2, 1) Or a(2, 1) <> a(2, 2) Then
  74. If a(2, 2) <> a(0, 0) Or a(0, 1) <> a(2, 2) Or a(0, 2) <> a(2, 2) Or a(1, 0) <> a(2, 2) Or a(1, 1) <> a(2, 2) Or a(1, 2) <> a(2, 2) Or a(2, 0) <> a(2, 2) Or a(2, 1) <> a(2, 2) Then
  75.  
  76.  
  77. MsgBox("no es un cuadro m&#225;gico ")
  78. Else
  79. MsgBox("no es un cuadro m&#225;gico hay numeros repetidos")
  80. End If
  81. End If
  82. End If
  83. End If
  84. End If
  85. End If
  86. End If
  87. End If
  88. End If
  89.  
  90. End If
  91.  
  92. End Sub
  93. End Class
  94.  


« Última modificación: 19 Noviembre 2013, 04:48 am por raul338 » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Pasar programa de Ciclo if a for (cuadro magico)
« Respuesta #1 en: 19 Noviembre 2013, 21:00 pm »

Dios mio!

Vaya animalada de código, si yo fuese el profesor sincéramente no dejaria que el alumno volviese a entrar en clase.

Consejos:

· Evitar cualquier uso de IF anidado de esa manera tan ...exagerada.

· No escribir lineas tan largas que sobrepasen la capacidad de la IDE obligando a usar la scrollbar horizontal, eso no es nada productivo ni eficiente (por no hablar d leos ifs), usa la indentación y la tecla "Intro" o el caracter "_" para truncar una linea larga, que para algo está todo eso.

· Aprovéchate cuanto puedas de las comodidades que ofrecen las extensiones LINQ en lugar de iterar los elementos con un FOR (aunque es mejor un FOR, pero si se trata de simplificar la escritura de código entonces usa LINQ).

· No compliques las cosas más de lo necesario usando arrays dimensionales, no lo necesitas, de hecho cualquier tipo de container está de más para esta tarea, pero si quieres almacenar los numeros en algún sitio para tener algún tipo de conrol sobre ellos, usa un array de toda la vida, no compliques más las cosas.


Ejemplo:

EDITO: mejor elaborado

Código
  1. Public Class Form1
  2.  
  3.    ReadOnly Property Numbers As Integer()
  4.        Get
  5.            Return {
  6.                    CInt(TextBox1.Text), CInt(TextBox2.Text), CInt(TextBox3.Text),
  7.                    CInt(TextBox4.Text), CInt(TextBox5.Text), CInt(TextBox6.Text),
  8.                    CInt(TextBox7.Text), CInt(TextBox8.Text), CInt(TextBox9.Text)
  9.                   }
  10.        End Get
  11.    End Property
  12.  
  13.    ReadOnly Property Total As Integer
  14.        Get
  15.            Return Numbers().Sum(Function(number) number)
  16.        End Get
  17.    End Property
  18.  
  19.    ReadOnly Property HasDuplicates As Boolean
  20.        Get
  21.            Return (From i As Integer In Numbers
  22.                    Group By i Into Count()
  23.                    Where Count <> 1).Any
  24.        End Get
  25.    End Property
  26.  
  27.    Private Shadows Sub Load() Handles MyBase.Load
  28.        TextBox1.Text = CStr(6) : TextBox2.Text = CStr(1) : TextBox3.Text = CStr(8)
  29.        TextBox4.Text = CStr(7) : TextBox5.Text = CStr(5) : TextBox6.Text = CStr(3)
  30.        TextBox7.Text = CStr(2) : TextBox8.Text = CStr(9) : TextBox9.Text = CStr(4)
  31.    End Sub
  32.  
  33.    Private Sub Button_Click() Handles Button1.Click
  34.  
  35.        Select Case Total
  36.  
  37.            Case (15 * 3)
  38.                If HasDuplicates Then
  39.                    MsgBox("No es un cuadro mágico, hay numeros repetidos.")
  40.                Else
  41.                    MsgBox("Es un cuadro mágico.")
  42.                End If
  43.  
  44.            Case Else
  45.                MsgBox("No es un cuadro mágico, los números de cada columna no suman 15 en su totalidad.")
  46.  
  47.        End Select
  48.  
  49.    End Sub
  50.  
  51. End Class
Saludos.


« Última modificación: 19 Noviembre 2013, 22:04 pm por EleKtro H@cker » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
cuadro magico
Java
Bleach@lex 1 8,855 Último mensaje 21 Junio 2010, 09:13 am
por danielo-
Programa en C sharp que genera un cuadrado magico , suma sus filas y columnas
.NET (C#, VB.NET, ASP)
david_quiroz19 0 9,430 Último mensaje 13 Noviembre 2011, 00:15 am
por david_quiroz19
Programa en C no termina bien el ciclo
Programación C/C++
Xgirl12 3 2,817 Último mensaje 4 Noviembre 2012, 04:28 am
por Xgirl12
me podrian ayudar con este programa en C por favor utilizando el ciclo FOR
Programación C/C++
alejandro01 2 2,854 Último mensaje 26 Noviembre 2012, 00:58 am
por SonaArtica
Programa no entra a ciclo for
Java
edr89 6 3,175 Último mensaje 7 Junio 2015, 08:41 am
por edr89
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines