Mostrando entradas con la etiqueta printf. Mostrar todas las entradas
Mostrando entradas con la etiqueta printf. Mostrar todas las entradas

lunes, 14 de diciembre de 2020

Problema de los rombos

El siguiente problema lo he venido encontrado a menudo en diferentes clases, el objetivo es el correcto manejo de la sentencia FOR y el printf.

Lo que busca es ingresar el valor de un número que representa el lado de un rombo e imprimir en pantalla el rombo. un ejemplo de ejecución:


Lo he resuelto utilizando un función para imprimir cada línea, de esta forma el programa me parece más ordenado.

Os dejo el código:

#include <iostream>

void imprimirFila(int fila, int lado)

{

//calculo de fila en el caso de estar en el triangulo inferior

if(fila>lado) fila = (lado * 2) - fila;

//calcular el número de blancos a imprimir

int blancos = (lado * 2) - fila;

//calcular el número de caracteres a imprimir

int impreso = (fila * 2) - 1;

//impresion de blancos

for(int i=1; i<=blancos; i++) printf(" ");

//impresion de caracteres

for(int i=1; i<=impreso; i++) printf("X");

//imprime salto de linea

printf("\n");

}


int main(int argc, char** argv) {

//ingresa el valor del rombo

int lado = 0;

printf("ingrese el lado del rombo:");

scanf("%d", &lado);

printf("el valor del lado ingresado es: %d\n", lado);

//calculamos el número de lineas a imprimir

int lineas = (lado * 2) - 1;

//un for para imprimir cada linea

for(int fila = 1; fila<=lineas; fila++)

{

imprimirFila(fila, lado);

}

return 0;

}