Aqui explicaré como podemos hacer esta gráfica en consola usando caracteres, espacios y un bucle. La figura es la siguiente:
x xxx xxxxx xxxxxxx
Pues como vemos en la primera fila tenemos 3 espacios y 1 caracter, luego 2 espacios y 3 caracteres (sumamos 2 en caracteres), luego 1 espacio y 5 caracteres y por último tenemos 0 espacios (ninguno) y 7 caracteres!
¿Cómo lo hacemos?
Primero necesitamos tener como base un número impar (cuyo módulo del número y 2 sea diferente de 0 (caso contrario sería par)) y luego creamos el algoritmo!
Trabajaremos con el número 7 y haremos una copia de Número como NN;
Para la primera fila sería asi:
Espacios = Numero / 2; (7/2 =3)
Caracteres = NN – Espacios *2; (7 – 6 = 1)
Numero = Numero -2; (7-2 = 5)
Imprimir Espacios, Imprimir caracteres! >> ___X
Entonces nuesto bucle sería el siguiente:
Mientras Numero sea mayor que 0 hacemos:
Espacios = Numero / 2;
Caracteres = Copia de Numero – Espacios *2;
Numero = Numero -2;
Imprimir espacios, Imprimir Caracteres
En C# sería asi:
int esp, ch, tt = n, x = 0;
while (x < n)
{
esp = n / 2;
ch = tt - (esp * 2);
n = n - 2;
espacio(esp);
caract(ch);
Console.WriteLine();
}
Nuestras funciones “espacio()” y “caract()” serían las siguientes, lo único que hacen es imprimir la cantidad de espacios y caracteres según el valor de la variable recibida!
void espacio(int x) //void, quiere decir que no devuelve valores
{
int a; // declaramos a pero no le asignamos valor
for (a = 0; a < x; a++) // por que el bucle le dara un valor
{
Console.Write(" "); // cuantas veces 'a' sea menor que 'x'
} // imprimiremos espacios en la consola!
}
void caract(int x) // no devolvemos valor!
{
int a;
for (a = 0; a < x; a++) //bucle para cantidad de caracteres
{
Console.Write("x"); // imprimimos caracteres
}
}
Este código no puede mostrarse en funcionamiento (debido a que es C#) de todos modos encuentran el código (con las funciones de entrada de datos) listo para compilar en develop.ignoranto.info en la sección de C#, o simplemente haciendo clic aquí!