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');
}