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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  * [Source] Triangulo Pascal
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: * [Source] Triangulo Pascal  (Leído 12,828 veces)
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
* [Source] Triangulo Pascal
« en: 3 Enero 2010, 22:36 pm »

bueno andaba aburrido e hice el codigo para generar el triangulo de pascal

se nesesitan

2 textBox (textbox 2 en propiedad multilinea = true)
1 CommandButton

Código
  1.  
  2. '
  3. ' ////////////////////////////////////////////////////////////////
  4. ' // Autor: BlackZeroX ( Ortega Avila Miguel Angel )            //
  5. ' //                                                            //
  6. ' // Web: http://InfrAngeluX.Sytes.Net/                         //
  7. ' //                                                            //
  8. ' // |-> Pueden Distribuir Este Codigo siempre y cuando         //
  9. ' // no se eliminen los creditos originales de este codigo      //
  10. ' // No importando que sea modificado/editado o engrandesido    //
  11. ' // o achicado, si es en base a este codigo                    //
  12. ' ////////////////////////////////////////////////////////////////
  13.  
  14. Option Explicit
  15.  
  16. Public Function GenerateTrianglePascal(ByVal nLineas As Long) As String
  17. On Error GoTo 1
  18. Dim a                       As Long
  19. Dim b                       As Long
  20. Dim CelVar()                As Double
  21.    If nLineas > 0 Then
  22.        ReDim CelVar(nLineas, nLineas)
  23.        For a = 1 To nLineas
  24.            For b = 1 To a: DoEvents
  25.                CelVar(a, b) = Val(IIf(b = 1, 1, Val(CelVar(a - 1, b - 1)) + Val(CelVar(a - 1, b))))
  26.                GenerateTrianglePascal = GenerateTrianglePascal & CelVar(a, b) & IIf(Not b = a, String(3, " "), "")
  27.            Next b
  28.            If a <> nLineas Then GenerateTrianglePascal = GenerateTrianglePascal & vbCrLf
  29.        Next a
  30. 1:      Erase CelVar
  31.    End If
  32. End Function
  33.  
  34. Private Sub Form_Load()
  35.    Text2.Alignment = 2 '   //  Modo centralizado
  36. End Sub
  37.  
  38. Private Sub Command1_Click()
  39.    Text2.Text = GenerateTrianglePascal(Val(Text1.Text))
  40. End Sub
  41.  
  42.  

con dowhile y doevents

Código
  1.  
  2. '
  3. ' ////////////////////////////////////////////////////////////////
  4. ' // Autor: BlackZeroX ( Ortega Avila Miguel Angel )            //
  5. ' //                                                            //
  6. ' // Web: http://InfrAngeluX.Sytes.Net/                         //
  7. ' //                                                            //
  8. ' // |-> Pueden Distribuir Este Codigo siempre y cuando         //
  9. ' // no se eliminen los creditos originales de este codigo      //
  10. ' // No importando que sea modificado/editado o engrandesido    //
  11. ' // o achicado, si es en base a este codigo                    //
  12. ' ////////////////////////////////////////////////////////////////
  13.  
  14. Option Explicit
  15.  
  16. Public Function GenerateTrianglePascal(ByVal nLineas As Long) As String
  17. On Error GoTo 1
  18. Dim a                           As Long
  19. Dim b                           As Long
  20. Dim CelVar()                    As Double
  21.    If nLineas > 0 Then
  22.        ReDim CelVar(nLineas, nLineas)
  23.        a = 1: Do While a <= nLineas
  24.            b = 1: Do While b <= a: DoEvents
  25.                CelVar(a, b) = Val(IIf(b = 1, 1, Val(CelVar(a - 1, b - 1)) + Val(CelVar(a - 1, b))))
  26.                GenerateTrianglePascal = GenerateTrianglePascal & CelVar(a, b) & IIf(Not b = a, String(2, " "), "")
  27.            b = b + 1: Loop
  28.            If a <> nLineas Then GenerateTrianglePascal = GenerateTrianglePascal & vbCrLf
  29.        a = a + 1: Loop
  30. 1:      Erase CelVar
  31.    End If
  32. End Function
  33.  
  34. Private Sub Form_Load()
  35.    Text2.Alignment = 2 '   //  Modo centralizado
  36. End Sub
  37.  
  38. Private Sub Command1_Click()
  39.    Text2.Text = GenerateTrianglePascal(Val(Text1.Text))
  40. End Sub
  41.  
  42.  


Código ligeramente mejorado ya se se queda tanto tiempo muerto!¡.

Código
  1.  
  2. '
  3. ' ////////////////////////////////////////////////////////////////
  4. ' // Autor: BlackZeroX ( Ortega Avila Miguel Angel )            //
  5. ' //                                                            //
  6. ' // Web: http://InfrAngeluX.Sytes.Net/                         //
  7. ' //                                                            //
  8. ' // |-> Pueden Distribuir Este Codigo siempre y cuando         //
  9. ' // no se eliminen los creditos originales de este codigo      //
  10. ' // No importando que sea modificado/editado o engrandesido    //
  11. ' // o achicado, si es en base a este codigo                    //
  12. ' ////////////////////////////////////////////////////////////////
  13.  
  14. Option Explicit
  15.  
  16. Public Sub GenerateTrianglePascal(ByVal nLineas As Long, ByRef OutData As String)
  17. 'On Error GoTo 1
  18. Dim a                       As Long
  19. Dim b                       As Long
  20. Dim Puntero                 As Long
  21. Dim Longitud                As Long
  22. Dim Temporal                As String
  23. Dim CelVar()                As Double
  24. Dim OutDataTemp             As String
  25. Const KiloByte              As Long = 5120
  26.    If nLineas > 0 Then
  27.        ReDim CelVar(nLineas, nLineas)
  28.        Puntero = 1
  29.        OutDataTemp = Space(KiloByte)
  30.        Temporal = Space(255)
  31.        For a = 1 To nLineas
  32.            For b = 1 To a: DoEvents
  33.                CelVar(a, b) = Val(IIf(b = 1, 1, Val(CelVar(a - 1, b - 1)) + Val(CelVar(a - 1, b))))
  34.                Temporal = CelVar(a, b) & IIf(a <> b, " ", "")
  35.                Longitud = Len(Temporal)
  36.                Mid(OutDataTemp, Puntero, Longitud) = Temporal
  37.                Puntero = Puntero + Longitud
  38.                If Puntero > KiloByte Then
  39.                    OutData = OutData & OutDataTemp
  40.                    OutDataTemp = Space(KiloByte)
  41.                    Puntero = 2
  42.                End If
  43.            Next b
  44.            If a <> nLineas Then
  45.                Puntero = Puntero
  46.                Mid(OutDataTemp, Puntero, 2) = vbCrLf
  47.                Puntero = Puntero + 2
  48.            End If
  49.            Caption = a
  50.        Next a
  51. 1:      Erase CelVar
  52.    End If
  53.    OutData = OutData & Trim$(OutDataTemp)
  54. End Sub
  55. Private Sub Form_Load()
  56.    Text2.Alignment = 2 '   //  Modo centralizado
  57. End Sub
  58. Private Sub Command1_Click()
  59. Dim datas                   As String
  60.    Call GenerateTrianglePascal(Val(Text1.Text), datas)
  61.    Text2.Text = datas
  62. End Sub
  63.  
  64.  

la longitud de los números esta limitada por el buffer que solo le asigne 255 caracteres.

El limite de lineas es de 932 si es que no se aumentan los buffers de memoria



P.D.: El código en lugar de hacerle un redim a celvar(x,x) puede hacerse de esta forma Celver(1,x) pero decidí dejar los registros anteriores por si alguien deseaba hacerles cambios aun que de esta forma en la que lo deje gasta mas memoria ram en el modo celvar(1,x) no gastaría tanta pero tendría que estarse usando copymemori (API) para mover el de 1 a 0 y sacar los nuevos valores.



Dulces Lunas!¡


« Última modificación: 7 Enero 2010, 01:21 am por ░▒▓BlackZeroҖ▓▒░ » En línea

The Dark Shadow is my passion.
Urbe Tecnologica

Desconectado Desconectado

Mensajes: 94


Non NobiS, DomiNe, Sed NomIne tuo Da GLoriaM


Ver Perfil
Re: [Source] Triangulo Pascal
« Respuesta #1 en: 4 Enero 2010, 19:38 pm »

El triángulo de Pascal en matemáticas es un conjunto infinito de números enteros ordenados en forma de triángulo que expresan coeficientes binomiales. El interés del Triángulo de Pascal radica en su aplicación en álgebra y permite calcular de forma sencilla números combinatorios lo que sirve para aplicar el binomio de Newton.

También es conocido como Triángulo de Tartaglia. En países orientales como China, India o Persia, este triángulo se conocía y fue estudiado por matemáticos como Al-Karaji, cinco siglos antes de que Pascal expusiera sus aplicaciones. En China es conocido como Triángulo de Yanghui. (Wikipedia)

Lo probe, le puse el numero 500 en el text1 y se me colgo la maquina jajaja           :P


« Última modificación: 4 Enero 2010, 19:41 pm por Urbe Tecnologica » En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [Source] Triangulo Pascal
« Respuesta #2 en: 4 Enero 2010, 22:59 pm »

ponle un DoEvents en los for next asi no se traba

en el post principal puse un código pero con do while

Dulces lunas!¡.
« Última modificación: 4 Enero 2010, 23:09 pm por ░▒▓BlackZeroҖ▓▒░ » En línea

The Dark Shadow is my passion.
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: [Source] Triangulo Pascal
« Respuesta #3 en: 5 Enero 2010, 00:56 am »

otra cosa que se podria mejorar es sacarle el IIf en los bucles largos, aunque no lo crean, el IIf es mas lento que los if comunes  ;D...
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [Source] Triangulo Pascal
« Respuesta #4 en: 5 Enero 2010, 07:40 am »

Bueno lo he arreglado para que no se quede parado tanto tiempo, el código esta en el primer post es el 3er código!¡.

Dulces Lunas1¡.
« Última modificación: 5 Enero 2010, 08:26 am por ░▒▓BlackZeroҖ▓▒░ » En línea

The Dark Shadow is my passion.
Urbe Tecnologica

Desconectado Desconectado

Mensajes: 94


Non NobiS, DomiNe, Sed NomIne tuo Da GLoriaM


Ver Perfil
Re: [Source] Triangulo Pascal
« Respuesta #5 en: 5 Enero 2010, 18:15 pm »

Ahora si mucho mejor  ;D

Ahora bien...que pasaria si hacemos la inversa ?  :P
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Source] Triangulo Pascal
« Respuesta #6 en: 5 Enero 2010, 18:28 pm »

Weeee, eso mismo lo había dejado hace un par de días pero en python, no me había planetado hacerlo en VB :P

Urbe Tecnologica, a que le llamas "la inversa"?
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [Source] Triangulo Pascal
« Respuesta #7 en: 5 Enero 2010, 21:35 pm »

Weeee, eso mismo lo había dejado hace un par de días pero en python, no me había planetado hacerlo en VB :P

Urbe Tecnologica, a que le llamas "la inversa"?


yo vi un reto en indetectables.net y por aburrimiento lo hize ahora busco el tipo me interesa python xP

Dulces Lunas!¡
En línea

The Dark Shadow is my passion.
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [Source] Triangulo Pascal
« Respuesta #8 en: 5 Enero 2010, 23:15 pm »

Ahora si mucho mejor  ;D

Ahora bien...que pasaria si hacemos la inversa ?  :P

Pues tendría que llegar a 1 no ¬¬"

Dulces Lunas!¡
En línea

The Dark Shadow is my passion.
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Source] Triangulo Pascal
« Respuesta #9 en: 5 Enero 2010, 23:31 pm »

Puede ser .. el problema con eso sería que tendrías que partir de un nivel del triángulo dado, así que sería necesario ingresar por parámetros dicho nivel, y no hay seguridad de que sea correcto :-\

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Triangulo De Sierpinsky
Java
zaico 3 5,341 Último mensaje 2 Mayo 2012, 03:31 am
por _teiki
[C] Imprimir Triangulo de Pascal
Programación C/C++
edr89 3 16,526 Último mensaje 7 Junio 2013, 09:27 am
por leosansan
Binomio de Newton, y triángulo de Pascal « 1 2 3 4 »
Programación C/C++
Yoel Alejandro 36 41,101 Último mensaje 21 Marzo 2014, 16:54 pm
por Yoel Alejandro
Forma triangulo de pascal
Programación C/C++
shulpeca 0 1,836 Último mensaje 1 Diciembre 2017, 22:47 pm
por shulpeca
Necesito ayuda con un programa en c
Programación C/C++
jorgito19998 1 1,816 Último mensaje 23 Febrero 2018, 23:41 pm
por dijsktra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines