/*
programa: tabalas de multiplicación de 1 a n (donde n es le numero que da el usuario) y las ordena de forma horizontal aprovechando la pantalla
Claudio enrique alpizar Romero
13.08.2013
utiliza color, ubicación de texto y pone marco si las tablas son de 1 a 5
Compilador: dev c++ portable
*/
#include <stdio.h>
#include <windows.h>
void ir_cr(int c, int r)
{
/*
funcion: ubica printf en coordenadas epecificas de la pantalla
sirve para posicionar texto en coordenadas especificas (x-columna,y-renglon)
se tiene que declarar <windows.h>
*/
COORD coord;
coord.X=c;
coord.Y=r;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}
void Set_Mrc(int c1,int r1,int c2,int r2) // construye marco
{
/*
funcion: crea marco con codigo ascii
*/
int i;
ir_cr(c1,r1); printf("%c",201); // esquinas
ir_cr(c1,r2); printf("%c",200);
ir_cr(c2,r1); printf("%c",187);
ir_cr(c2,r2); printf("%c",188);
for(i=c1+1;i<c2;i++) // controla columna
{
ir_cr(i,r1);printf("%c",205); // LINEA ARRIBA HORIZONTAL
ir_cr(i,r2);printf("%c",205); // LINEA ABAJO HORIZONTAL
}
for(i=r1+1;i<r2;i++) // controla renglon
{
ir_cr(c1,i);printf("%c",186); // LINEA IZQUIERDA VERTICAL
ir_cr(c2,i);printf("%c",186); // LINEA DERECHA VERTICAL
}
}
void tablas(int p1) // calcula y muestra tablas
{
int numr,rep,r=5,cuenta=0,producto;
int ncol[5]={2,17,32,47,62}; // columna para cada tabla
int p2=10,p3=4,p4=13;
// p2-del 1 al 10, p3-columnas en pantalla, p4-renglones de espacio entre bloque de tablas
for(rep=1;rep<=p1;rep++)
{
for(numr=1; numr<=p2;numr++)
{
producto = rep * numr;
ir_cr(ncol[cuenta],r+numr);printf("%d * %d = %d", rep, numr, producto);
}
if (cuenta<p3)
{
cuenta++;
}
else
{
r+=p4;
cuenta=0;
}
}
}
main()
{
char respuesta = 'n';
int n=0;
do{
system("color 71");
system("CLS");
ir_cr(25,2);printf("TABLAS DE MULTIPLICACION");
ir_cr(25,4);printf("Introduzca el valor n = ");scanf("%d", &n);
getchar();
if (n>0 && n<=100)
{
if (n<=5)
{
Set_Mrc(1,1,78,23);
}
tablas(n);
if (n<=5)
{
ir_cr(25,22);
}
else
{
printf("\n\n");
}
printf("Continuar <s/n> ? ");
respuesta = getch();
}
else
{
system("color 47");
system("CLS");
Set_Mrc(1,1,78,23);
ir_cr(20,11);printf("El valor debe ser mayor a 0 y menor a 100!!!!");
beep(500,1000);
ir_cr(25,22);printf("Continuar <s/n> ? ");
respuesta = getch();
}
}while(respuesta == 's'|| respuesta == 'S');
system("color 17");
system("CLS");
Set_Mrc(1,1,78,23);
ir_cr(20,10);printf("Gracias por su visita, hasta luego!!!");
ir_cr(18,22);printf("Presione cualquier tecla para continuar... ");
getch();
}
No hay comentarios:
Publicar un comentario