// 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 #include 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); }