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;

}



No hay comentarios:

Publicar un comentario