177 lines
3.7 KiB
C++
177 lines
3.7 KiB
C++
// Prog6
|
||
//
|
||
// Programadores:
|
||
//
|
||
// Juan L¢pez Fern ndez
|
||
// Mois‚s Virumbrales Cuenca
|
||
// DAI 1§A
|
||
//
|
||
// Imprime una pir mide de asteriscos seg£n las opciones tecleadas
|
||
// por el usuario.
|
||
//
|
||
// Descripci¢n de las variables:
|
||
// num: N£mero de asteriscos de la base.
|
||
// altura: N£mero de filas de la pir mide.
|
||
// posx, posy: Posici¢n del cursor para imprimir asteriscos.
|
||
// conposx: Contador que lleva el n£mero de asteriscos imprimidos por fila.
|
||
// conposy: Contador que lleva el n£mero de filas imprimidas.
|
||
// color, color2, colorg: Guarda colores introducidos por usuario.
|
||
// conveces: Cuenta las veces que se introduce un color
|
||
// nveces: Marca las veces que se realiza el bucle dependiendo si es
|
||
// Monocolor o Bicolor.
|
||
// tipo: Tipo de pir mide (normal o invertida)
|
||
// pausa: Para hacer una pausa al final del programa.
|
||
// ncolores: Guarda si es Monocolor o Bicolor.
|
||
// tipocolor: Forma de colorearlo (por filas o asteriscos).
|
||
|
||
|
||
|
||
#include <stdio.h>
|
||
#include <conio.h>
|
||
|
||
int num;
|
||
int altura;
|
||
int posx,posy;
|
||
int conposx,conposy;
|
||
int color,color2,colorg;
|
||
int conveces,nveces;
|
||
char tipo,pausa,ncolores,tipocolor;
|
||
|
||
void main()
|
||
{
|
||
|
||
do
|
||
{
|
||
clrscr();
|
||
gotoxy (17,13);
|
||
printf ("Introduce el N§ de asteriscos de la base: ");
|
||
fflush (stdin);
|
||
scanf ("%d",&num);
|
||
}
|
||
while (num %2!=0 || num<1 || num>50);
|
||
|
||
do
|
||
{
|
||
clrscr();
|
||
gotoxy(20,12);
|
||
printf (" Tipo de pir mide (Normal o Invertida): ");
|
||
fflush (stdin);
|
||
scanf ("%c",&tipo);
|
||
}
|
||
while (tipo!='n' && tipo!='i');
|
||
|
||
do
|
||
{
|
||
clrscr();
|
||
gotoxy (20,12);
|
||
printf (" Monocolor o Bicolor: ");
|
||
fflush (stdin);
|
||
scanf ("%c",&ncolores);
|
||
}
|
||
while (ncolores!='m' && ncolores!='b');
|
||
|
||
if (ncolores=='m')
|
||
{
|
||
nveces=1;
|
||
}
|
||
else
|
||
{
|
||
nveces=2;
|
||
|
||
do
|
||
{
|
||
clrscr();
|
||
gotoxy(20,12);
|
||
printf (" Colorear por Filas o por Asteriscos: ");
|
||
fflush(stdin);
|
||
scanf ("%c",&tipocolor);
|
||
}
|
||
while (tipocolor!='f' && tipocolor!='a');
|
||
}
|
||
|
||
conveces=1;
|
||
|
||
do
|
||
{
|
||
if (nveces==2)
|
||
{
|
||
color2=color;
|
||
}
|
||
|
||
clrscr();
|
||
gotoxy (25,8); printf (" 1.- Azul");
|
||
gotoxy (25,9); printf (" 2.- Verde");
|
||
gotoxy (25,10); printf (" 3.- Cyan");
|
||
gotoxy (25,11); printf (" 4.- Rojo");
|
||
gotoxy (25,12); printf (" 5.- Morado");
|
||
gotoxy (25,13); printf (" 6.- Marr¢n");
|
||
gotoxy (25,14); printf (" 7.- Gris claro");
|
||
gotoxy (25,15); printf (" 8.- Gris oscuro");
|
||
gotoxy (25,16); printf (" 9.- Azul claro");
|
||
gotoxy (25,17); printf ("10.- Verde claro");
|
||
gotoxy (25,18); printf ("11.- Cyan claro");
|
||
gotoxy (25,19); printf ("12.- Rojo claro");
|
||
gotoxy (25,20); printf ("13.- Morado claro");
|
||
gotoxy (25,21); printf ("14.- Amarillo");
|
||
gotoxy (25,22); printf ("15.- Blanco");
|
||
gotoxy (20,6);
|
||
printf (" Elige color %d§: ",conveces);
|
||
fflush(stdin);
|
||
scanf ("%d",&color);
|
||
conveces++;
|
||
}
|
||
while (color<1 || color>15 || conveces<=nveces);
|
||
|
||
altura=(num/2);
|
||
posx=((80-num)/2);
|
||
|
||
if (tipo=='n')
|
||
{
|
||
posy=(25-((25-altura)/2));
|
||
}
|
||
else
|
||
{
|
||
posy=((26-(altura-1))/2);
|
||
}
|
||
|
||
clrscr();
|
||
textcolor(color);
|
||
|
||
for (conposy=1;conposy<=altura;conposy++)
|
||
{
|
||
gotoxy(posx,posy);
|
||
|
||
if (tipocolor=='f')
|
||
{
|
||
colorg=color;color=color2;color2=colorg;
|
||
textcolor(colorg);
|
||
}
|
||
|
||
for (conposx=1;conposx<=num;conposx++)
|
||
{
|
||
if (tipocolor=='a')
|
||
{
|
||
colorg=color;color=color2;color2=colorg;
|
||
textcolor (colorg);
|
||
}
|
||
|
||
cprintf ("*");
|
||
}
|
||
|
||
if (tipo=='n')
|
||
{
|
||
posy--;
|
||
}
|
||
else
|
||
{
|
||
posy++;
|
||
}
|
||
num=num-2;
|
||
posx++;
|
||
}
|
||
|
||
textcolor(7);
|
||
gotoxy(80,25);
|
||
fflush (stdin);
|
||
scanf ("%c",&pausa);
|
||
} |