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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  triangulo de ceros y unos vb
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: triangulo de ceros y unos vb  (Leído 2,678 veces)
elsrtenedor

Desconectado Desconectado

Mensajes: 2


Ver Perfil
triangulo de ceros y unos vb
« en: 5 Junio 2019, 23:02 pm »

Código
  1.  
necesito su ayuda con un programa.

necesito hacer un programa en visual basic en aplicacion windows from.NET que dibuje un triangulo de 0 y 1 en un msgbox, de n números de filas.

por ejemplo n=7

1
11
101
1001
10001
100001
1111111

por favor alguien podria decirme como se hace, llevo varias horas intentandolo y no lo consigo ni de cerca o almenos darme alguna idea. soy muy nuevo en esto


« Última modificación: 5 Junio 2019, 23:28 pm por elsrtenedor » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: triangulo de ceros y unos vb
« Respuesta #1 en: 6 Junio 2019, 01:26 am »

Citar
1
11
101
1001
10001
100001
1111111

Eso más que un triángulo, sería una pirámide. Y más que dibujar (la forma de un triángulo), creo que lo que realmente quieres es imprimir texto y mostrarlo mediante un MsgBox. Pero si no especificas cuales son las reglas de formato que debe seguir la construcción de dicha pirámide entonces dudo que alguien te pueda ayudar. Por ejemplo veo que todas las filas están alineadas a la izquierda, y la longitud de las dos primeras y la última fila se imprimen solamente con el caracter "1", mientras que el resto de filas empiezan y acaban con "1" pero el resto son "0". No explicas nada. De todas formas aquí no se hacen tareas (no se me ocurre que utilidad podría tener mostrar una pirámide de ceros y unos en un MsgBox si no es por que te lo pide un ejercicio de clase). Si muestras tus intentos fallidos / progresos y aclaras con exactitud las reglas de formato de dicha pirámide, tendrás más posibilidades de que alguien pueda ayudarte...

Un saludo.


« Última modificación: 6 Junio 2019, 01:37 am por Eleкtro » En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: triangulo de ceros y unos vb
« Respuesta #2 en: 6 Junio 2019, 02:33 am »

elsrtenedor
Citar
por favor alguien podria decirme como se hace, llevo varias horas intentandolo y no lo consigo ni de cerca
¿y qué has intentado en varias horas?
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.348


Ver Perfil
Re: triangulo de ceros y unos vb
« Respuesta #3 en: 6 Junio 2019, 15:07 pm »

...además este no es el foro de VB.NET...

Para no dejarte al sol y que se te seque el cerebro, digamos que necesitas 2 bucles, en el externo se escriben/generan los unos, antes del bucle interno siempre escribe un 1 y a la salida del interno otro 1, y en el bucle interno los ceros.

dicho de otra manera...el bucle externo controla la 'verticalidad, el interno la horizontalidad, si bien el bucle interno comienza (por asi decirlo), un carácter '1' antes del bucle y acaba un carácter '1' después del bucle

Ahora piensa un poco... cuantos ciclos tendría el bucle externo y cuantos el interno?... intenta dibujar a lápiz primero para n=1,2,3 y luego si te funciona también con 4 (esto es , cuanto  debiera ser el valor del bucle externo e interno), y si te sigue resultando bien, es muy probable que te lo resuelva para cualquier n (eso sí, msgbox tiene un límite de caracteres).
« Última modificación: 6 Junio 2019, 15:15 pm por NEBIRE » En línea

elsrtenedor

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: triangulo de ceros y unos vb
« Respuesta #4 en: 7 Junio 2019, 03:16 am »

GRACIAS NEBIRE

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim filas As Integer = 0
        Dim tri As String = ""
        filas = InputBox("INGRESE UN NUMERO MAYOR A 0", "VENTANA DE CARGA")
        While (filas < 0)
            MsgBox("Introduzca solo valores mayores a 0")
            filas = InputBox("INGRESE UN NUMERO MAYOR A 0", "VENTANA DE CARGA")
        End While
            For n As Integer = 1 To filas
                For i As Integer = 1 To n
                    If i = 1 Or i = n Or n = filas Then
                        tri = tri + "1 "
                    Else
                        tri = tri + "0 "
                    End If
                Next
                tri += vbNewLine
            Next
        MsgBox("Triángulo:" + vbNewLine + vbNewLine + tri)
    End Sub
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: triangulo de ceros y unos vb
« Respuesta #5 en: 7 Junio 2019, 04:58 am »

El código que has mostrado, puedes simplificarlo y micro-optimizarlo de la siguiente manera:

Código
  1. Dim rows As UShort
  2. Do Until (UShort.TryParse(Interaction.InputBox("INGRESE UN NÚMERO MAYOR A 0:", Me.Text),
  3.                          NumberStyles.Integer, CultureInfo.InvariantCulture, rows))
  4.  
  5.    MessageBox.Show(Me, "Introduzca solo valores mayores a 0.", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
  6. Loop
  7.  
  8. Dim sb As New StringBuilder()
  9. For row As UShort = 0 To (rows - 1US)
  10.    For column As UShort = 0 To row
  11.        sb.Append(If((column = 0) OrElse (column = row) OrElse (row = rows), "1 ", "0 "))
  12.    Next column
  13.    sb.AppendLine()
  14. Next row
  15.  
  16. MessageBox.Show(Me, $"Triángulo: {String.Concat(Enumerable.Repeat(Environment.NewLine, 2))}{sb.ToString()}",
  17.                Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)

Dependiendo de tus necesidades reales, y a menos que esto sea para un ejercicio de clase...

1. Reemplaza el tipo primitivo sin signo UShort por el tipo sin signo que sea más conveniente. Usa el tipo Byte si solamente es para mostrarlo en un MsgBox, ya que dudo que en ese caso quieras crear y mostrar más de 255 filas.

2. Deberías considerar mover/encapsular el código a una función reutilizable, que tome como parámetro la cantidad de filas, y que simplemente devuelva la cadena de texto/triángulo. Pero como sigues sin determinar las reglas de formato, he dejado el código tal y como está.

Saludos.
« Última modificación: 7 Junio 2019, 05:29 am por Eleкtro » En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.348


Ver Perfil
Re: triangulo de ceros y unos vb
« Respuesta #6 en: 7 Junio 2019, 15:50 pm »

De entrada sigue los consejos que te recomienda Elektro...

...para continuar, la utilidad práctica de utilizar dos bucles es no requerir un condicional... esto es, al disponer de dos bucles en vez de solo uno, ya queda debidamente condicionado.

...luego me has leído solo parcialmente:
Citar
...necesitas 2 bucles, en el externo se escriben/generan los unos, antes del bucle interno siempre escribe un 1 y a la salida del interno otro 1, y en el bucle interno los ceros.

...si bien el bucle interno comienza (por asi decirlo), un carácter '1' antes del bucle y acaba un carácter '1' después del bucle...
Es mas, con el tiempo y a medida que entiendas mejor la programación, verías que el bucle interno puede ser substituído por una línea con un método de string... pero para el principiante, el uso de bucles es necesario para que aprenda la lógica subyacente.

El código entonces, quedaría algo así como:
Código
  1. triangulo = "1" & vbNewLine ' la cadena debe empezar ya con la primera línea, pues es la única que no lleva d '1s', que es lo que dibuja cada bucle externo.
  2. ' por eso el bucle empieza ya con 2... y si 'filas = 1' no entra pués en el bucle.
  3. For n = 2 To filas-1  ' <---- ojo: -1, pues la ultima linea no lleva '0s', se debe generar aparte.
  4.    triangulo.append("1")
  5.    For i = 1 To n -2  ' <----- ojo: -2, pues esa es la cuenta de '0s' en cada linea, los dos '1s' no se escriben aqui.
  6.          triangulo.append("0")                    
  7.    Next
  8.    triangulo.append("1" & vbNewLine)
  9. Next
  10.  
  11. ' la ultima linea se compone de solo '1s'.
  12. triangulo.append(string("1", filas))  ' en este punto n=filas
  13.  
  14. messagebox.show(triangulo)
  15.  

Como señalaba Elektro, mucho mejor si se coloca dentro de una función y esta recibe 1 o mas parámetros...

Código
  1. Private Function TrianguloTexto(byval Filas as byte, otrosparametros, optional byref Separador as string = VBNewLine) as string
  2.   dim Triangulo as string = "1" & separador
  3.   dim n  as byte, i as byte
  4.  
  5.   ' básicamente copiar el código anterior aquí y remplazar los nombres d elas variables  a como aquí se denominen
  6.  
  7.   return Triangulo
  8. End function
Luego basta invocar la función con el dato introducido por el usuario, algo así como:
Código
  1.    dim filas as integer
  2.    do
  3.        filas = inputbox...  ' OJO: No hace falta un msgbox previo, inputbox, también puede mostrar un mensaje de texto...
  4.    loop while filas...
  5.  
  6.    messagebox.Show(TriangularTexto( (filas))
  7.  


..y para terminar, tal como señala Elektro, no tenemos una precisa descripción del problema. Por ejemplo pudiera ser que la imagen completa requiera espacios, esto es, que todas las líneas dispongan de la misma cantidad de caracteres, para que visualmente el resultado se vea como un rombo... a falta de una descripción exacta, no puede proporcionarse más solución que la dada.

p.d.: Editado, donde puse 'rombo' (párrafo anterior) en realidad debe poner 'triángulo isósceles'.
« Última modificación: 15 Junio 2019, 15:53 pm por NEBIRE » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[DUDA] Contador con ceros a la izquierda
Programación Visual Basic
HJZR4 6 3,599 Último mensaje 20 Octubre 2008, 21:18 pm
por ssccaann43 ©
IMPORTANTE: sequencia de unos i ceros
Electrónica
oskar^^ 1 3,013 Último mensaje 11 Enero 2009, 21:50 pm
por skapunky
Donde estan los ceros? o.O
Programación Visual Basic
extreme69 8 3,308 Último mensaje 1 Noviembre 2011, 05:00 am
por extreme69
Enteros con ceros al inicio AYUDA
Programación C/C++
cesarjgrd.18 6 2,705 Último mensaje 7 Noviembre 2011, 02:17 am
por BlackZeroX
eliminar registros con ceros
.NET (C#, VB.NET, ASP)
luis456 5 3,382 Último mensaje 12 Noviembre 2014, 12:35 pm
por luis456
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines