Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: osmanorozco en 25 Agosto 2012, 00:19 am



Título: vb
Publicado por: osmanorozco en 25 Agosto 2012, 00:19 am
queria saber amigos q codigo me hace falta para q me de este resultado


-realizar un programa q dibuje un triangulo de n filas, empleando el carácter asterisco (ver figura). Realice el programa utilizando:

Sentencia For
Sentencia while
 Por ejemplo para n = 4
               *******
                   *****
                    ***
                      *            
Option Explicit
Private Sub Command1_Click()
Dim nf As Integer
Dim asterisco As String

'Dim j As Integer
Dim i As Integer
nf = InputBox("ingrese el numero de fila")
asterisco = asterisco & "*"
For i = 1 To nf

       asterisco = asterisco & vbCrLf & String(i, "*") & vbCrLf
    Next
        MsgBox asterisco
   
    End Sub



Título: Re: vb
Publicado por: seba123neo en 25 Agosto 2012, 01:24 am
el post anterior te lo borre, porque borraste el mensaje principal, y eso que te habian respondido varios usuarios incluido yo, como te dijeron no se hacen tareas.


Título: Re: vb
Publicado por: kaiserr en 25 Agosto 2012, 01:45 am
yo haria una relacion entre el numero de filas y asteriscos... es decir, si tu indicas que hay 4 filas, empezar con 4 asteriscos e ir reduciendo la cantidad hasta uno.


Título: Re: vb
Publicado por: Elemental Code en 25 Agosto 2012, 06:00 am
porque no usar una matriz?

Código:
Valores de X()
[3,0] [3,1] [3,2] [3,3]
[2,0] [2,1] [2,2] [2,3]
[1,0] [1,1] [1,2] [1,3]
[0,0] [0,1] [0,2] [0,3]

0,0 = *
0,1 = *
1,1 = *
2,2 = *
3,3 = *
2,3 = *
1,3 = *
0,3 = *
0,2 = *

Resultado:

[ ] [ ] [ ] [*]
[ ] [ ] [*] [*]
[ ] [*] [ ] [*]
[*] [*] [*] [*]

Despues mostralo con una fuente monospace :P



Edito.
Mas facil hacerlo con un for en negativo, no? :P

hace algo asi:
RUSICMODEOOOOOON!

Código
  1. x = InputBox("asteriscos iniciales")
  2. For i = x To 1 Step -1
  3.    asteriscos = asteriscos & String(i, "*") & vbCrLf
  4. Next
  5. MsgBox asteriscos

este codigo no tiene variables declaradas, comprobacion de errores ni nada. es una mera muestra nomas de como usar un step negativo


Título: Re: vb
Publicado por: ABDERRAMAH en 25 Agosto 2012, 06:53 am
un bucle while anidado es otra opción, no es muy buena, sobre todo despues de las que hemos visto antes, pero no deja de ser una opción. Lo he escrito aquí sin probarlo ni nada, es sólo un ejemplo, pero puede contener errores (aunque no, creo que no).

Citar
dim respuesta as string=""
dim main_iteracion as integer=4
dim sec_iteracion as integer=0

do while p >= 1
 sec_iteracion = p-1

  do while sec_iteracion > 1
   respuesta=respuesta+"**"
   sec_iteracion=sec_iteracion - 1
  loop

 respuesta=respuesta+"*"+vbnewline
 main_iteracion=sec_iteracion - 1
loop

return respuesta


se deben aprovechar las pautas, si llamamos iteración al identificador de la línea que estamos dibujando:

el número de asteriscos por línea = iteracion+(iteracion-1) o lo que es lo mismo
número de asteriscos por línea = 1-(2*iteracion)
Por otro lado no me ha quedado claro si hay que añadir los espacios o no, aunque a juzgar por el enunciado no.


Título: Re: vb
Publicado por: BlackZeroX en 25 Agosto 2012, 07:08 am
yo lo haría así:

Código
  1.  
  2. option explicit
  3.  
  4. Private Sub Form_Load()
  5. Dim n As Long
  6. Dim i As Long
  7.    n = CLng(InputBox("Tamaño del triangulo:", "Triangulo", 15))
  8.    For i = n To 0 Step -2
  9.        Debug.Print String((n - i) / 2, " ") & String(i, "*")
  10.    Next i
  11. End Sub
  12.  
  13.  

Dulces Lunas!¡.


Título: Re: vb
Publicado por: BlackZeroX en 25 Agosto 2012, 07:10 am

el número de asteriscos por línea = iteracion+(iteracion-1) o lo que es lo mismo
número de asteriscos por línea = 1-(2*iteracion)


De hecho: línea = iteracion+(iteracion-1) es igual a línea = (2*iteracion) - 1 o lo que es lo mismo a línea = -1 + (2*iteracion)

Dulces Lunas!¡.