Principal
Personal
Escolares
Proyectos
Pasatiempos
Referencias


PROGRAMA MANIPULADOR DE MATRICES


Este es un proyecto para pasar la matería de Computación para Ingeniería, en la cual se requería que se hiciera un programa en Lenguaje C, que realizara las operaciones de:

  • Suma de Matrices
  • Resta de Matrices
  • Multiplicación de Matrices
  • Transpuesta de una Matriz
Puedes bajar el programa que incluye el ejecutable y el código fuente dando clic en la siguiente liga, el archivo que bajas está comprimido en formato ZIP. I usas Windows puedes descomprimirlo usando el software WinZip


Compu1.Zip
Es el archivo que contiene todos los archivos de este proyecto en formato comprimido zip
COMPU1.CPP
Es el archivo con el código fuente
COMPU1.EXE
Es el archivo ejecutable. Recuerda que esta versión es para MS-DOS
COMPU1.OBJ
Es el archivo objeto
COMPU1.BAK
Es el archivo de respaldo del código fuente

Para poder ejecutar este programa necesitas estar en entorno MS-DOS. Una vez que estés en el MSDOS deberás de poner COMPU1, tal y como se muestra en la siguiente imágen:



enseguida deberás presionar enter, y te aparecerá la siguiente pantalla:



Hay que esperar a que se complete la barrita de caritas para proseguir a la siguiente pantalla:



Esta pantalla es el menú principal. Cada vez que realices una operación regresarás a este menú.

A continuación ingresamos a la opción de Suma de Matrices  (Opción 1). En las siguientes pantallas se muestra las ventanas que nos pregunta las dimensiones de las matrices:





Ya que indicamos las dimensiones de las matrices, se procede a ingresar valor por valor, de cada una de las matrices. En la parte de abajo pregunta el valor de cada elemento de la matriz, y en la ventana de hasta abajo, lado izquierdo nos dice cual de las dos matrices estamos hablando




Aquí podemos observar que la ventana "Suma de Matrices" nos está solicitando los valores de la segunda matriz de la suma



Ya que introdujimos los valores de las matrices, nos aparece el resultado de la suma. Para regresar al menú principal hay que entrar la S mayúscula.



Otra vez nos regresa al menú principal. Para salir hay que dar la opción Cero



Cuando salimos del programa, nos muestra un mensaje de que salimos del Programa Manipulador de Matrices Versión 001, cambia el color de la pantalla y nos lleva hasta el prompt del MSDOS



El código fuente de este programa es el siguiente:

//                       PROGRAMA PARA PASAR COMPUTACION                   //
//                        Programa Operador de Matrices                    //
//                                                                         //
//                                                    Hecho por: AL717320. //
 
#include<iostream.h>
#include<conio.h>
#include<dos.h>
#include<string.h>
 
void ventana(int MS,int MA,int MI,int MB);
void muro(int MS,int MA,int MI,int MB);
void llena(int LIN, int COL, float A[10][10]);
void muestra(int LIN, int COL, float A[10][10]);
void espera();
 
 
void main()
{
/************************* INICALIZACION **********************************/
cout << "\t             Programa Manipulador de Matrices\n\n";
delay(500);
cout << "\t                        (Ver. 001)\n\n";
delay(500);
cout << "\t       Hecho en MEXICO                   por: AL717320.\n\t";
int MI,MB,OP,N,P,R;
float A[10][10], B[10][10], C[10][10];
for (MI=5;MI<=70;MI++)
 {
 cout << "";
 delay(250);
 }
/***************************** INICIO *************************************/
INICIO:
textcolor(WHITE);
textbackground(BLUE);
clrscr();
for(MI=1;MI<=25;MI++)
 {
 for(MB=1;MB<=80;MB++)
  {
  if (MI==25 & MB==80) break;
  gotoxy (MB,MI);
  cout << "°";
  }
 }
ventana (2,8,6,70);
gotoxy(10,3);
cout << "Instituto Tecnologico y de Estudios Superiores de Monterrey";
gotoxy(32,4);
cout << "Ciudad de Mexico";
gotoxy(25,5);
textcolor(7);
cprintf("Programa que Opera con Matrices");
gotoxy(11,3);
cprintf ("nstituto");
gotoxy(21,3);
cprintf ("ecnologico y de");
gotoxy (38,3);
cprintf ("studios");
gotoxy (47,3);
cprintf ("uperiores de");
gotoxy (61,3);
cprintf ("onterrey");
gotoxy (33,4);
cprintf ("iudad de");
gotoxy (43,4);
cprintf ("‚xico");
ventana(22,39,24,77);
gotoxy(40,23);
cout << "P";
textcolor(7);
cprintf ("rogramador:");
char letra[25];
char *memo="Salvador Mac¡as Hern ndez";
strcpy(letra,memo);
 
for (MI=0;MI<=24;MI++)
{
 sound (100);
 delay(50);
 cout << letra[MI];
 nosound();
 delay(25);
}
sound(850);
delay (100);
nosound();
//**************************** MENU ****************************************/
MENU:
ventana(9,27,18,49);
gotoxy(30,9);
textcolor(YELLOW);
cprintf (" Menu ");
textcolor (7);
gotoxy(30,11);
cprintf ("1) Suma");
gotoxy(30,12);
cprintf ("2) Resta");
gotoxy(30,13);
cprintf ("3) Multiplicacion");
gotoxy(30,14);
cprintf ("4) Transpuesta");
//gotoxy(30,14);
//cprintf ("5) Exponenciacion");
gotoxy(30,15);
cprintf ("0) Salir");
gotoxy(28,17);
cprintf ("Seleccione Opcion:");
cin >> OP;
switch (OP)
 {
 case 0:          //------------------------------------------------- SALIR.
  {
  for (MI=900;MI>100;MI--)
   {
   sound (MI);
   delay(5);
   }
  clrscr();
  nosound();
  cout << "   Manipulador de Matrices.\n\t(Ver.001)";
  return;
  }
 case 1:          //------------------------------------------------- SUMA.
  {
SUMA:
PIDE_FILA:
   textcolor(WHITE);
   muro (1,1,20,79);
   ventana(5,25,9,47);
   gotoxy(26,6);
   textcolor(7);
   cout << "D";
   cprintf("e cuantas filas son");
   gotoxy(26,7);
   cprintf("las matrices a sumar.");
   gotoxy(31,9);
   cprintf("(Maximo 10)");
   gotoxy(29,8);
   cin >> N;
   if (N<1 | N>10)
    { sound(900); delay(500); nosound(); goto PIDE_FILA; }
PIDE_COLUMNA:
   textcolor(WHITE);
   muro (1,1,20,79);
   ventana(5,25,9,49);
   gotoxy(26,6);
   textcolor(7);
   cout << "D";
   cprintf("e cuantas columnas son");
   gotoxy(26,7);
   cprintf("las matrices a sumar.");
   gotoxy(31,9);
   cprintf("(Maximo 10)");
   gotoxy(29,8);
   cin >> P;
   if (P<1 | P>10)
    { sound(900); delay(500); nosound(); goto PIDE_COLUMNA; }
   ventana(21,5,23,33);
   gotoxy(6,22);
   cprintf("Matris del primer sumando");
   gotoxy(7,21);
   textcolor(YELLOW);
   cprintf(" Suma de Matrices. ");
   textcolor(WHITE);
   llena(N,P,A);
   sleep(3);
   gotoxy(6,22);
   cprintf("Matris del segundo sumando");
   textcolor(WHITE);
   llena(N,P,B);
   sleep(3);
   gotoxy(6,22);
   cprintf("Matris Resultado.         ");
   for (MI=1;MI<=N;MI++)
    {
    for (MB=1;MB<=P;MB++)
     {
     C[MI][MB]=A[MI][MB]+B[MI][MB];
     }
    }
   textcolor(WHITE);
   muestra(N,P,C);
   sleep(3);
   espera();
  }
 break;
 case 2:
 {
RESTA:                //----------------------------------------------- RESTA
PIDE_FILAR:
   textcolor(WHITE);
   muro (1,1,20,79);
   ventana(5,25,9,47);
   gotoxy(26,6);
   textcolor(7);
   cout << "D";
   cprintf("e cuantas filas son");
   gotoxy(26,7);
   cprintf("las matrices a restar");
   gotoxy(31,9);
   cprintf("(Maximo 10)");
   gotoxy(29,8);
   cin >> N;
   if (N<1 | N>10)
    { sound(900); delay(500); nosound(); goto PIDE_FILAR; }
PIDE_COLUMNAR:
   textcolor(WHITE);
   muro (1,1,20,79);
   ventana(5,25,9,49);
   gotoxy(26,6);
   textcolor(7);
   cout << "D";
   cprintf("e cuantas columnas son");
   gotoxy(26,7);
   cprintf("las matrices a restar");
   gotoxy(31,9);
   cprintf("(Maximo 10)");
   gotoxy(29,8);
   cin >> P;
   if (P<1 | P>10)
    { sound(900); delay(500); nosound(); goto PIDE_COLUMNAR; }
   ventana(21,5,23,33);
   gotoxy(6,22);
   cprintf("Matris del minuendo      ");
   gotoxy(7,21);
   textcolor(YELLOW);
   cprintf(" Resta de Matrices. ");
   textcolor(WHITE);
   llena(N,P,A);
   sleep(3);
   gotoxy(6,22);
   cprintf("Matris del substraendo    ");
   textcolor(WHITE);
   llena(N,P,B);
   sleep(3);
   gotoxy(6,22);
   cprintf("Matris substraccion.      ");
   for (MI=1;MI<=N;MI++)
    {
    for (MB=1;MB<=P;MB++)
     {
     C[MI][MB]=A[MI][MB]-B[MI][MB];
     }
    }
   textcolor(WHITE);
   muestra(N,P,C);
   sleep(3);
   espera();
  }
 break;
 case 3:
  {
MULTIPLICACION:            //-------------------------------- MULTIPLICACION.
PIDE_FILAM:
   textcolor(WHITE);
   muro (1,1,20,79);
   ventana(5,25,9,50);
   gotoxy(26,6);
   textcolor(7);
   cout << "D";
   cprintf("e cuantas filas es la");
   gotoxy(26,7);
   cprintf("matris a multiplicando.");
   gotoxy(31,9);
   cprintf("(Maximo 10)");
   gotoxy(29,8);
   cin >> N;
   if (N<1 | N>10)
    { sound(900); delay(500); nosound(); goto PIDE_FILAM; }
PIDE_COLUMNAM:
   textcolor(WHITE);
   muro (1,1,20,79);
   ventana(5,25,9,51);
   gotoxy(26,6);
   textcolor(7);
   cout << "D";
   cprintf("e cuantas columnas es la");
   gotoxy(26,7);
   cprintf("matris a multiplicando.");
   gotoxy(31,9);
   cprintf("(Maximo 10)");
   gotoxy(29,8);
   cin >> P;
   if (P<1 | P>10)
    { sound(900); delay(500); nosound(); goto PIDE_COLUMNAM; }
PIDE_COLUMNM:
   textcolor(WHITE);
   muro (1,1,20,79);
   ventana(5,25,9,51);
   gotoxy(26,6);
   textcolor(7);
   cout << "D";
   cprintf("e cuantas columnas es la");
   gotoxy(26,7);
   cprintf("matris a multiplicador.");
   gotoxy(31,9);
   cprintf("(Maximo 10)");
   gotoxy(29,8);
   cin >> R;
   if (R<1 | R>10)
    { sound(900); delay(500); nosound(); goto PIDE_COLUMNM; }
   ventana(21,5,23,33);
   gotoxy(6,22);
   cprintf("Matris del multiplicando ");
   gotoxy(6,21);
   textcolor(YELLOW);
   cprintf("Multiplicacion de Matrices.");
   textcolor(WHITE);
   llena(N,P,A);
   sleep(3);
   gotoxy(6,22);
   cprintf("Matris del multiplicador  ");
   textcolor(WHITE);
   llena(P,R,B);
   sleep(3);
   gotoxy(6,22);
   cprintf("Matris Producto.          ");
   int MJ, MY;
   for (MI=1;MI<=N;MI++)
    {
    for (MB=1;MB<=R;MB++)
     {
     MY=0;
     for (MJ=1;MJ<=P;MJ++)
      {
      MY=MY+(A[MI][MJ]*B[MJ][MB]);
      }
     C[MI][MB]=MY;
     }
    }
   textcolor(WHITE);
   muestra(N,R,C);
   sleep(3);
   espera();
  }
 break;
 case 4:            //------------------------------------------ TRANSPUESTA.
  {
TRANSPUESTA:
PIDE_FILAT:
   textcolor(WHITE);
   muro (1,1,20,79);
   ventana(5,25,9,49);
   gotoxy(26,6);
   textcolor(7);
   cout << "D";
   cprintf("e cuantas filas es la");
   gotoxy(26,7);
   cprintf("matris a transponer.");
   gotoxy(31,9);
   cprintf("(Maximo 10)");
   gotoxy(29,8);
   cin >> N;
   if (N<1 | N>10)
    { sound(900); delay(500); nosound(); goto PIDE_FILAT; }
PIDE_COLUMNAT:
   textcolor(WHITE);
   muro (1,1,20,79);
   ventana(5,25,9,51);
   gotoxy(26,6);
   textcolor(7);
   cout << "D";
   cprintf("e cuantas columnas es la");
   gotoxy(26,7);
   cprintf("matris a transponer.");
   gotoxy(31,9);
   cprintf("(Maximo 10)");
   gotoxy(29,8);
   cin >> P;
   if (P<1 | P>10)
    { sound(900); delay(500); nosound(); goto PIDE_COLUMNAT; }
   ventana(21,5,23,33);
   gotoxy(6,22);
   cprintf("Matris a transponer.");
   gotoxy(7,21);
   textcolor(YELLOW);
   cprintf(" Transpuesta. ");
   textcolor(WHITE);
   llena(N,P,A);
   sleep(3);
   gotoxy(6,22);
   cprintf("Matris Transpuesta.");
   for (MI=1;MI<=P;MI++)
    {
    for (MB=1;MB<=N;MB++)
     {
     C[MI][MB]=A[MB][MI];
     }
    }
   textcolor(WHITE);
   muestra(P,N,C);
   sleep(3);
   espera();
  }
  break;
 default: {sound(800); delay(500); nosound(); goto MENU;}
 }
goto INICIO;
}
 
 
 
 
/*************************** FUNCIONES *************************************/
 
 
void ventana(int MS,int MA,int MI,int MB)
 {
 int COL,LIN;
  for (LIN=MS;LIN<=MI;LIN++)
   {
   for (COL=MA;COL<=MB;COL++)
    {
    gotoxy (COL,LIN);
    cout << " ";
    }
   }
  for (COL=MA;COL<=MB;COL++)
   {
   gotoxy(COL,MS);
   cout << "Ä";
   gotoxy(COL,MI);
   cout << "Ä";
   }
  for (LIN=MS;LIN<=MI;LIN++)
   {
   gotoxy(MA,LIN);
   cout << "³" ;
   gotoxy(MB,LIN);
   cout << "³";
   }
  gotoxy (MA,MS);
  cout << "Ú";
  gotoxy (MA,MI);
  cout << "À";
  gotoxy (MB,MS);
  cout << "¿";
  gotoxy (MB,MI);
  cout << "Ù";
  textcolor(2);
  for (LIN=MS+1;LIN<=MI;LIN++)
   {
   gotoxy(MB+1,LIN);
   cprintf("°°");
   }
  for (COL=MA+3;COL<=MB+2;COL++)
   {
   gotoxy(COL,MI+1);
   cprintf("°");
   }
 }
 
 
 
 
void muro(int MS,int MA,int MI,int MB)
{
int COL,LIN;
for (LIN=MS;LIN<=MI;LIN++)
 {
 for (COL=MA;COL<=MB;COL++)
  {
  gotoxy(COL,LIN);
  cprintf (" ");
  gotoxy(COL,LIN);
  cout << "°";
  }
 }
}
 
 
void llena(int LIN, int COL, float A[10][10])
{
muro(2,4,19,76);
ventana(17,6,19,75);
ventana(2,4,3+LIN,76);
gotoxy(9,2);
cout << "                                                                ";
gotoxy(9,3+LIN);
cout << "                                                                ";
/*gotoxy(10,3+LIN);
cprintf ("Esta ventana es solo para localizar a los elementos que se");
gotoxy(29,4+LIN);
cprintf ("vallan pidiendo.");*/
int MI, MB;
for (MI=1;MI<=LIN;MI++)
 {
 for (MB=1;MB<=COL;MB++)
  {
  gotoxy(8,18);
  cout << "Dame el elemento [" << MI <<"][" << MB <<"]:  ";
  gotoxy(35,18);
  cout << "          ";
  gotoxy(35,18);
  cin >> A[MI][MB];
  gotoxy((2+MB*(70/COL)-(70/(2*COL))),2+MI);
  cout << A[MI][MB];
  delay(50);
  }
 }
}
 
void muestra(int LIN, int COL, float A[10][10])
{
muro(2,4,19,79);
ventana(17,6,19,75);
ventana(2,4,3+LIN,76);
gotoxy(9,2);
cout << "                                                                ";
gotoxy(9,3+LIN);
cout << "                                                                ";
int MI, MB;
for (MI=1;MI<=LIN;MI++)
 {
 for (MB=1;MB<=COL;MB++)
  {
  gotoxy(8,18);
  cout << "El elemento [" << MI <<"][" << MB <<"]:  ";
  gotoxy(35,18);
  cout << "          ";
  gotoxy(35,18);
  cout << A[MI][MB];
  gotoxy((2+MB*(70/COL)-(70/(2*COL))),2+MI);
  cout << A[MI][MB];
  sound(100);
  delay(50);
  nosound();
  sleep(1);
  }
 }
}
 
void espera()
{
char S;
do
 {
 textcolor(WHITE);
 muro(21,1,24,35);
 ventana(21,2,23,30);
 gotoxy(3,22);
 cout << "Escriba S para salir.";
 cin >> S;
 } while(S!='S');
}