#include <iostream>
#include <cstdlib>
#include <conio.h>
#include <ctype.h>
using namespace std;
int operacion_sum(int [][100], int [][100], int [][100], int , int , int, int);
int operacion_res(int [][100], int [][100], int [][100], int , int, int, int);
int operacion_mul(int [][100], int [][100], int [][100], int , int, int, int);
int suma();
int resta();
int multiplicacion();
int salida();
int opcion;
int main()
{
int n,f,c,r,f1,f2,c1,c2, m1[100][100], m2[100][100], mr[100][100];
int opcion;
f1=0; c1=0; f2=0; c2=0;
cout<<"Este programa suma, resta o multiplica matrices"<<endl<<endl;
cout<<"Que desea hacer, si la opcion no esta disponible el programa finalizara"<<endl<<endl;
cout<<"1) Suman";
cout<<"2) Restan";
cout<<"3) Multiplicacionn";
cout<<"4) Salirn";
cout<<" "<<endl;
cin>>opcion;
cout<<" "<<endl;
switch(opcion) //Verifica el valor de opcion
{
case 1: //Si es uno
suma(); //sumo
break;
case 2: //Si es dos
resta(); //resto
break;
case 3: //Si es tres
multiplicacion(); //multiplico
break;
case 4: //Si es cuatro
salida(); //Ejecuto esta función para salir
break;
default: //Si es una opcion no disponible
cout<<" ";
salida(); //Ejecuto esta función para salir
}
if (opcion >=1 and opcion <=3) // si escojo 1, 2 o 3
{
cout<<endl<<"Escoja una opcion, si la opcion no esta disponible el programa finalizara"<<endl<<endl;
cout<<"1) Volver a calcular una matrizn";
cout<<"2) Salirn"<<endl;
cin>>opcion;
cout<<" "<<endl;
switch(opcion) //Verifica el valor de opcion
{
case 1: //Si es uno
system("cls"; //limpio la pantalla
main(); //Ejecuto nuevamente la función para calcular matrices
break;
case 2: //Si es dos
salida();
break; //El break sirve para que no ejecute las demas opciones
default: //Si es una opcion no disponible
cout<<" ";
salida(); //Ejecuto esta función para salir
}
} //aqui termina el if
}
int salida() // funcion para salir
{
cout<<endl<<"Trabajo realizado por:"<<endl;
cout<<" Carlos Arturo Marin"<<endl; // Quiten mi nombre y coloquen el de ustedes
cout<<endl<<"Programa finalizado..."<<endl;
system("PAUSE";
}
int suma() // funcion suma
{
int n,f,c,r,f1,f2,c1,c2, m1[100][100], m2[100][100], mr[100][100];
f1=0; c1=0; f2=0; c2=0;
while ((f1<1) || (f1>101))
{ cout<<"Ingrese el numero de filas de la matriz 1 (maximo 100 filas): ";
cin>>f1;
}
f1--; //Disminuyo en 1 el dato capturado porque el programa me cuenta el 0
while ((c1<1) || (c1>101))
{ cout<<"Ingrese el numero de columnas de la matriz 1 (maximo 100 columnas): "; cin>>c1; }
c1--;
while ((f2<1) || (f2>101))
{ cout<<endl<<"Ingrese el numero de filas de la matriz 2 (maximo 100 filas): "; cin>>f2; }
f2--;
while ((c2<1) || (c2>101))
{ cout<<"Ingrese el numero de columnas de la matriz 2 (maximo 100 columnas): "; cin>>c2; }
c2--;
r=operacion_sum (m1,m2,mr,f1,f2,c1,c2);
if (r==-1)
{cout<<endl<<"No se pudo realizar la operacion, la dimension de las matrices no coincide"<<endl;}
else
{
cout<<endl<<"Digite por filas los datos de la matriz 1"<<endl<<endl;
for (f=0; f<=f1; f++)
{
for (c=0; c<=c1; c++)
{ cout<<"m1["<<f<<"]["<<c<<"] = "; cin>>m1[f][c]; }
}
cout<<endl<<"Digite por filas los datos de la matriz 2"<<endl<<endl;
for (f=0; f<=f2; f++)
{
for (c=0; c<=c2; c++)
{ cout<<"m2["<<f<<"]["<<c<<"] = "; cin>>m2[f][c]; }
}
cout<<endl<<"El resultado de la suma de las matrices es:"<<endl<<endl;
r=operacion_sum (m1,m2,mr,f1,f2,c1,c2);
for (f=0; f<=f2; f++)
{
for (c=0; c<=c2; c++)
cout<<" "<<mr[f][c]<<" ";
cout<<endl;
}
}
}
int resta() // funcion resta
{
int n,f,c,r,f1,f2,c1,c2, m1[100][100], m2[100][100], mr[100][100];
f1=0; c1=0; f2=0; c2=0;
while ((f1<1) || (f1>101))
{ cout<<"Ingrese el numero de filas de la matriz 1 (maximo 100 filas): ";
cin>>f1;
}
f1--; //Disminuyo en 1 el dato capturado porque el programa me cuenta el 0
while ((c1<1) || (c1>101))
{ cout<<"Ingrese el numero de columnas de la matriz 1 (maximo 100 columnas): "; cin>>c1; }
c1--;
while ((f2<1) || (f2>101))
{ cout<<endl<<"Ingrese el numero de filas de la matriz 2 (maximo 100 filas): "; cin>>f2; }
f2--;
while ((c2<1) || (c2>101))
{ cout<<"Ingrese el numero de columnas de la matriz 2 (maximo 100 columnas): "; cin>>c2; }
c2--;
r=operacion_res (m1,m2,mr,f1,f2,c1,c2);
if (r==-1)
{cout<<endl<<"No se pudo realizar la operacion, la dimension de las matrices no coincide"<<endl;}
else
{
cout<<endl<<"Digite por filas los datos de la matriz 1"<<endl<<endl;
for (f=0; f<=f1; f++)
{
for (c=0; c<=c1; c++)
{ cout<<"m1["<<f<<"]["<<c<<"] = "; cin>>m1[f][c]; }
}
cout<<endl<<"Digite por filas los datos de la matriz 2"<<endl<<endl;
for (f=0; f<=f2; f++)
{
for (c=0; c<=c2; c++)
{ cout<<"m2["<<f<<"]["<<c<<"] = "; cin>>m2[f][c]; }
}
cout<<endl<<"El resultado de la resta de las matrices es:"<<endl<<endl;
r=operacion_res (m1,m2,mr,f1,f2,c1,c2);
for (f=0; f<=f2; f++)
{
for (c=0; c<=c2; c++)
cout<<" "<<mr[f][c]<<" ";
cout<<endl;
}
}
}
int multiplicacion() //funcion multiplicacion
{
int f,c,r,f1,f2,c1,c2, m1[100][100], m2[100][100], mr[100][100];
f1=0; c1=0; f2=0; c2=0;
while ((f1<1) || (f1>101))
{ cout<<"Ingrese el numero de filas de la matriz 1 (maximo 100 filas): ";
cin>>f1;
}
f1--; //Disminuyo en 1 el dato capturado porque el programa me cuenta el 0
while ((c1<1) || (c1>101))
{ cout<<"Ingrese el numero de columnas de la matriz 1 (maximo 100 columnas): "; cin>>c1; }
c1--;
while ((f2<1) || (f2>101))
{ cout<<endl<<"Ingrese el numero de filas de la matriz 2 (maximo 100 filas): "; cin>>f2; }
f2--;
while ((c2<1) || (c2>101))
{ cout<<"Ingrese el numero de columnas de la matriz 2 (maximo 100 columnas): "; cin>>c2; }
c2--;
r=operacion_mul(m1,m2,mr,f1,f2,c1,c2);
if (r==-1)
{
cout<<endl<<"No se pudo realizar la operacion, la dimension de las matrices no coincide"<<endl;
}
else
{
cout<<endl<<"Digite por filas los datos de la matriz 1"<<endl<<endl;
for (f=0; f<=f1; f++)
{
for (c=0; c<=c1; c++)
{ cout<<"m1["<<f<<"]["<<c<<"] = "; cin>>m1[f][c]; }
}
cout<<endl<<"Digite por filas los datos de la matriz 2"<<endl<<endl;
for (f=0; f<=f2; f++)
{
for (c=0; c<=c2; c++)
{ cout<<"m2["<<f<<"]["<<c<<"] = "; cin>>m2[f][c]; }
}
r=operacion_mul(m1,m2,mr,f1,f2,c1,c2); //Ejecuto la funcion que hace la operación de multiplicacion
{
cout<<endl<<"El resultado de la multiplicacion de las matrices es:"<<endl<<endl;
cout<<endl;
for (f=0; f<=f1; f++)
{
for (c=0; c<=c2; c++)
cout<<" "<<mr[f][c]<<" "; //Muestro la matriz resultante en la pantalla
cout<<endl;
}
}
}
}
int operacion_sum(int m1[][100], int m2[][100], int mr[][100], int f1, int f2,int c1, int c2)
{
int f,c;
if ((f1==f2) && (c1==c2)) //si si se pueden sumar/restar
{
for (f=0; f<=f1; f++)
{
for (c=0; c<=c1; c++)
mr[f][c] = m1[f][c] + m2[f][c];
}
return 1;
}
else
{return -1;}
}
int operacion_res(int m1[][100], int m2[][100], int mr[][100], int f1, int f2,int c1, int c2)
{
int f,c;
if ((f1==f2) && (c1==c2)) //si si se pueden sumar/restar
{
for (f=0; f<=f1; f++)
{
for (c=0; c<=c1; c++)
mr[f][c] = m1[f][c] - m2[f][c];
}
return 1;
}
else
{return -1;}
}
int operacion_mul(int m1[][100], int m2[][100], int mr[][100], int f1, int f2,int c1, int c2) //funcion operacion
{
int f,c,cc;
if (c1==f2) //si si se pueden multiplicar
{
for (cc=0; cc<=c2; cc++) //recorremos las columnas de B
{
for (f=0; f<=f1; f++)
{
for (c=0; c<=c1; c++)
{ mr[f][cc]+=m1[f][c]*m2[c][cc]; }
}
}
return 1;
}
else
{return -1;}
}

钱亚锋
- 粉丝: 108
- 资源: 1万+
最新资源
- 基于七自由度冗余机械臂的运动力学建模与优化Matlab代码包,基于七自由度冗余机械臂的SRS构型运动学建模与优化Matlab代码,SRS构型七自由度冗余机械臂运动学建模全套matlab代码 代码主要功
- Win10运行库-VC++2005-2022
- DeepSeek经验分享
- 基于MATLAB平台的微网多目标优化调度模型研究:粒子群算法的改进应用与实践分析,MATLAB程序中改进粒子群算法的微网多目标优化调度研究,基于MATLAB程序,改进粒子群算法的微网多目标优化调度 关
- AutoCAD ObjectArx2018
- Delphi 12 控件之DxAutoInstaller-2.3.5.7z
- COMSOL模拟非饱和裂隙土降雨入渗过程:透水层、探针与空气单元的数值解析及视频文献详解,COMSOL数值模拟:非饱和裂隙土降雨入渗的'空气单元'及透水层探针方法解析,COMSOL非饱和裂隙土降雨入渗
- Delphi 12.3 控件之ArtSQL-Win&Linux-0.1.30.rar
- 使用C#编程设计的计算器程序,可用于学习
- BOX-IN工控盒规格书
- 2021年最新改进天鹰优化算法:引入细菌增长模型等多策略提升性能,基于改进天鹰优化算法(IAO)的细菌增长模型与多策略融合优化器,改进天鹰优化算法(IAO),天鹰优化器,2021年较新优化算法,性能非
- kernel-5.10.0-46.uelc20.x86-64.rpm
- 圣沃数控SUNWO-X1i USB智能转换服务器安装指南与使用手册说明书
- (源码)基于STM32F1xx微控制器的智能交通灯控制系统.zip
- kernel-core-5.10.0-46.uelc20.x86-64.rpm
- Delph 12.3 控件之EurekaLog v7.13.1.0 Update 1 for Support Delphi 12 Athens + Patcher.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


