Imprimir secuencia de números

Hola experto, disculpa mi molestia pero como he visto que aparte de tu capacidad para lo matemático respondes secuencia de código, te realizo la siguiente consulta:

Tengo que imprimir esta secuencia de números en forma de pirámide centrado:

1

2 3 2

3 4 5 4 3

4 5 6 7 6 5 4

5 6 7 8 9 8 7 6 5

6 7 8 9 0 1 0 9 8 7 6

7 8 9 0 1 2 3 2 1 0 9 8 7

8 9 0 1 2 3 4 5 4 3 2 1 0 9 8

9 0 1 2 3 4 5 6 7 6 5 4 3 2 1 0 9

0 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 0

1 2 3 4 5 6 7 8 9 0 1 0 9 8 7 6 5 4 3 2 1

Tengo alguna posibilidad de formula para aplicarle a una variable de control i de un for para poder sacar esa secuencia numerica?

Desde ya muchas gracias!!!

1 Respuesta

Respuesta
1

El código depende mucho del lenguaje de programación.

He intentado hacerlo usando lo menos posible los controles visuales pero no sale bien porque la fuente que usa Visual Studio 12 Express que he usado hace más cortos los espacios blancos que otros con lo cual no queda bien centrado visualmente.

Si tu usas un control memo al que le puedas poner una fuente de tamaño fijo, le asignas el texto que llamo pirámide y quedará bien centrado.

Lo que he hecho te servirá sobre todo para crear ese texto centrado, luego la forma de visualizarlo es lo que habría que depurar, pero la única forma de hacerlo sería mandándote un fichero con el programa completo.

Module Module1
Sub Main()
Const LINEAS = 11
Dim Pirámide As String
Dim UltiLin, LongiMax As Integer
Dim Texto() As String = {
"1",
"2 3 2",
"3 4 5 4 3",
"4 5 6 7 6 5 4",
"5 6 7 8 9 8 7 6 5",
"6 7 8 9 0 1 0 9 8 7 6",
"7 8 9 0 1 2 3 2 1 0 9 8 7",
"8 9 0 1 2 3 4 5 4 3 2 1 0 9 8",
"9 0 1 2 3 4 5 6 7 6 5 4 3 2 1 0 9",
"0 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 0",
"1 2 3 4 5 6 7 8 9 0 1 0 9 8 7 6 5 4 3 2 1"}
UltiLin = UBound(texto)
LongiMax = Len(texto(UltiLin))
Pirámide = ""
For i = 0 To UltiLin
    Pirámide = Pirámide & Space((LongiMax - Len(Texto(i))) / 2) & Texto(i) & vbCrLf
Next
MsgBox(Pirámide)
End Sub
End Module

Y eso es todo, espero que te sirva y lo entiendas, sino es así pregúntame.

Se puede hacer que quede perfecto si hacemos un programa con formulario, el anterior era de consola.

Simplemente añadimos un control label en el formulario y el programa será este.

Public Class Form1
   Public texto() As String = {
      "1",
      "2 3 2",
      "3 4 5 4 3",
      "4 5 6 7 6 5 4",
      "5 6 7 8 9 8 7 6 5", 
      "6 7 8 9 0 1 0 9 8 7 6",
      "7 8 9 0 1 2 3 2 1 0 9 8 7",
      "8 9 0 1 2 3 4 5 4 3 2 1 0 9 8",
      "9 0 1 2 3 4 5 6 7 6 5 4 3 2 1 0 9",
      "0 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 0",
      "1 2 3 4 5 6 7 8 9 0 1 0 9 8 7 6 5 4 3 2 1"}
   Public UltiLin, LongiMax As Integer
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
      UltiLin = UBound(texto)
      LongiMax = Len(texto(UltiLin))
      Label1.Font = New Font("Courier New", 12)
      Label1.Text = ""
      For i = 0 To UltiLin
         Label1.Text = Label1.Text & Space((LongiMax - Len(texto(i))) / 2) & texto(i) & vbCrLf
      Next
   End Sub
End Class

Aquí hacemos que el control label Label1 tenga una fuente de tamaño fijo, la Courier New que es una fuente estándar que sin ninguna duda tendrás en tu ordenador.

Y eso es todo, ojala te sirva y lo hayas entendido. Si no es así pregúntame y si ya está bien no olvides puntuar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas