martes, 13 de agosto de 2013

dev c++: Calcula y muestra tablas de 1 a n, valores de x a y, forma horizontal version 2

/*
   Programa: Mostrar tablas de 1 a n, y numeros a ser multiplicados, (tablas se muestran de forma horizontal), los valores se solicitan al usuario
   13.08.2013
   Claudio enrique alpizar Romero
   compilador: dev c++ portable
   Se usa color, ubicacion de texto y marco.
  
*/

#include <stdio.h>
#include <windows.h>

void ir_cr(int c, int r)                  
{
    /*
       funcion: ubica printf en coordenadas epecificas de la pantalla
    autor:   Claudio enrique alpizar romero
    por lo esta funcion emula ir_cr 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
    autor:   Claudio enrique alpizar romero
    fecha:   24.07.2013
    */
   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 i,int p1,int n1,int p2)           // calcula y muestra tablas
{
     int numr,rep,r=7,cuenta=0,producto;
     int ncol[5]={2,17,32,47,62};       // columna para cada tabla
     int p3=4,p4=13;
     // p3-columnas en pantalla, p4-renglones de espacio entre bloque de tablas
     for(rep=i;rep<=p1;rep++)
     {
              for(numr=n1; 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,p=0,c=0,d=0;
       
    do{
        system("color 71");
        system("CLS"); 
        ir_cr(25,2);printf("TABLAS DE MULTIPLICACION");
        ir_cr(25,4);printf("Introduzca el valor de la primera tabla p = ");scanf("%d", &p);
        getchar();
        ir_cr(25,5);printf("Introduzca el valor de la ultima tabla  n = ");scanf("%d", &n);
        getchar();
        ir_cr(25,7);printf("Introduzca primer valor a multiplicar   vi = ");scanf("%d", &c);
        getchar();
        ir_cr(25,8);printf("Introduzca ultimo valor a multiplicar   vf = ");scanf("%d", &d);
        getchar();
       
        if(p>n)
        {
               p=n-2;     
        }
        if(c>d)
        {
               c=d-2;    
        }
       
        if (n>0 && n<=100 || d>0 && d<=100)
        {
                if (n<=5)
                {
                  Set_Mrc(1,1,78,23);       
                }
                tablas(p,n,c,d);
                 
                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();
}

dev c++: Calcula y muestra tablas de 1 a n, forma horizontal version 1

/*
   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();
}

dev c++: Calcular hipotenusa, perimetro, area y dibujar triangulo rectangulo

/*
  programa: Calcula hipotenusa, perimetro, area y dibuja triangulo rectangulo.
  Claudio Enrique Alpizar Romero
  13.08.2013
  Compilador: dev c++ portable
 Utiliza color, ubicación de texto y marco.
*/

#include <stdio.h>
#include <windows.h>
#include <math.h>


void ir_cr(int x, int y)//Emulador de ir_cr
{
    /*
       funcion: crea función para ubicar printf en columna y renglón especifico
    por lo esta funcion emula ir_cr para posicionar texto en coordenadas especificas
    se tiene que declarar <windows.h>
    */
    COORD coord;
    coord.X=x;
    coord.Y=y;
    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
    c1-----------c2
    r1            |
    |             |
    |             |
    -------------r2
    */
   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
   }   
}



float Get_hipotenusa(float a, float b)
{
      float hipotenusa = 0;
      hipotenusa = sqrt(a*a + b*b);
      return hipotenusa;
}

float Get_perimetro(float lado1, float lado2, float lado3)
{
      return lado1 + lado2 + lado3;
}

float Get_area(float b, float h)
{
      float area = (b*h)/2;
      return area;
}


void Set_dibuja(int a,int b)                                                                    
{                                                                              
 
 int T = b;                                                                 
 int R,C;                                                                      
 R = 1;                                                                        
 while (R <= b)  // renglon .- cateto mayor                                                           
    {                                                                          
      C = 1;                                                                   
      while (C <= R) /* columna */                                                        
      {                                                                   
          ir_cr(3+C,2+R);printf("#");                                                       
          C++;
      }                                                                   
      printf("\n");                                                          
      R++;                                                             
    }
    return;
}


main()
{
    char respuesta = 'n';
    float  a, b, x;
   
   
    system("color 74"); 
    do
    {
          
        system("CLS");
        Set_Mrc(1,1,78,23);
        Set_Mrc(27,3,50,5);
       
        ir_cr(28,4);printf("TRIANGULOS RECTANGULOS");
       
        printf("\n");
       
        ir_cr(28,7);printf("Cateto Menor = ");
        scanf("%f", &a);
        getchar();
       
        ir_cr(28,8);printf("Cateto Mayor = ");
        scanf("%f", &b);
        getchar();
       
        if(a>b)
        {
                x = a;
                a = b;
                b = x;
                ir_cr(28,10);printf("Cateto Menor = %f \n", a);
                ir_cr(28,11);printf("Cateto Mayor = %f \n", b);           
        }
       
        ir_cr(28,13);printf("Hipotenusa = %f", Get_hipotenusa(a,b) );
        ir_cr(28,14);printf("Perimetro  = %f", Get_perimetro(a,b,Get_hipotenusa(a,b)) );
        ir_cr(28,15);printf("Area       = %f", Get_area(a,b) );
       
        if (b<=20)
        {
              Set_dibuja(a,b);
        }
        else
        {
              Set_dibuja(7,20);
           
        }    
       
        printf("\n");
        ir_cr(28,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();
}