Publicidad:
Terra
La Coctelera

CAJÓN DE SASTRE

7 Diciembre 2011

UNED: FUNDAMENTOS DE PROGRAMACIÓN: SEGUNDA PRÁCTICA

SEGUNDA PRÁCTICA: ROMBOS.

Enunciado de la práctica:

Esta práctica consiste en realizar un programa que imprima por pantalla rombos concéntricos dibujados con los caracteres '@', 'o' y '.'.

El programa solicitará, como dato de entrada, la longitud del lado del rombo más externo (es decir, su número de caracteres). De fuera hacia dentro, el primer rombo estará formado por caracteres '@', el segundo por caracteres '.', el tercero por caracteres 'o', el cuarto nuevamente por caracteres '.', el quinto por caracteres '@', el sexto también por caracteres '.', el séptimo por caracteres 'o' y así sucesivamente.

El rombo siempre debe quedar ajustado a la izquierda de la pantalla y estar separado con una línea en blanco después de la pregunta ¿lado del rombo?

El tamaño más grande del rombo será de 20 caracteres de lado. El programa no deberá imprimir nada para tamaños cero o negativo, ni para tamaños superiores a 20.

La secuencia cíclica de caracteres repite siempre este esquema: '@.0.'

Esta secuencia puede implementarse utilizando el operador % de resto de división.

Solución:

/************************************

* NOMBRE: #Perico#

* PRIMER APELLIDO: #Palotes#

* SEGUNDO APELLIDO: #Zutano#

* DNI: #99999999W#

* EMAIL: #99999999@yahoo.es#

************************************/

#include <stdio.h>

int main() {

int lado; /* lado del rombo */

/* Leer el lado del rombo deseado */

printf( "¿Lado del rombo?" );

scanf( "%d", &lado );

/* saltar una línea */

printf( "\n" );

/* Condicional para que el programa no se ejecute si el lado es menor a 0 o mayor de 20 */

if( lado > 0 && lado <= 20) {

/* Una iteración por cada línea del rombo en la parte superior */

for( int linea = 1; linea <= lado; linea++) {

/* Paso 1º: Espacios en blanco a la izquierda del rombo */

for( int posicion = 1; posicion <= lado - linea; posicion++ ) {

printf( " " );

}

/* Paso 2º: Escribir caracteres en cada línea hasta la mitad del rombo */

for( int posicion = 1; posicion <= linea; posicion++ ) {

if( posicion % 4 == 1) {

printf( "@" );

} else if( posicion % 4 == 2) {

printf( "." );

} else if( posicion % 4 == 3) {

printf( "o" );

} else {

printf( "." );

}

}

/* Paso 3º: Escribir caracteres en cada línea desde la mitad del rombo hasta el final */

for( int posicion = linea - 1; posicion >= 1; posicion-- ) {

if( posicion % 4 == 1) {

printf( "@" );

} else if( posicion % 4 == 2) {

printf( "." );

} else if( posicion % 4 == 3) {

printf( "o" );

} else {

printf( "." );

}

}

/* Pasar a la línea de abajo */

printf( "\n" );

}

/* Una iteración por cada línea del rombo en la parte inferior */

for( int linea = lado + 1; linea <= (lado * 2) - 1; linea++ ) {

/* Paso 1º: Espacios en blanco a la izquierda del rombo */

for( int posicion = 1; posicion <= linea - lado; posicion++ ) {

printf( " " );

}

/* Paso 2º: Escribir caracteres en cada línea hasta la mitad del rombo */

for (int posicion = 1; posicion <= lado - (linea - lado); posicion++ ) {

if( posicion % 4 == 1) {

printf( "@" );

} else if( posicion % 4 == 2) {

printf( "." );

} else if( posicion % 4 == 3) {

printf( "o" );

} else {

printf( "." );

}

}

/* Paso 3º: Escribir caracteres en cada línea desde la mitad del rombo hasta el final */

for( int posicion = lado - (linea - lado + 1); posicion >= 1 ; posicion--) {

if( posicion % 4 == 1) {

printf( "@" );

} else if( posicion % 4 == 2) {

printf( "." );

} else if( posicion % 4 == 3) {

printf( "o" );

} else {

printf( "." );

}

}

/* Pasar a la línea de abajo */

printf( "\n" );

}

}

}

Adjunto el enlace al archivo cpp: http://www.lacoctelera.com/myfiles/arquitrasto/practica_2_publica.rar

servido por JOSHUA 2 comentarios compártelo

2 comentarios · Escribe aquí tu comentario

pedro

pedro dijo

aunque parece que va bien no pasa el corrector del entorno. ....

27 Diciembre 2011 | 04:55 PM

JOSHUA

JOSHUA dijo

He añadido el enlace al archivo cpp de la práctica 2.

1 Febrero 2012 | 06:42 PM

Escribe tu comentario


Sobre mí

Avatar de JOSHUA

CAJÓN DE SASTRE

España
ver perfil »
contacto »

Fotos

JOSHUA todavía no ha subido ninguna foto.

¡Anímale a hacerlo!

Buscar

suscríbete

Selecciona el agregador que utilices para suscribirte a este blog (también puedes obtener la URL de los feeds):

¿Qué es esto?

Crea tu blog gratis en La Coctelera