Main
using System;
using System.Collections.Generic;
using System.Text;
namespace CMatrices
{
class Program
{
static void Main(string[] args)
{
int[,] M1, M2, MR;
Double[,] Mres,Moriginal,Minversa;
int fila, columna, fila2, columna2;
String opc;
do
{
Console.WriteLine(" MENU ");
Console.WriteLine("1........................SUMA DE MATRICES");
Console.WriteLine("2........................RESTA DE MATRICES");
Console.WriteLine("3........................MULTIPLICACION DE MATRICES");
Console.WriteLine("4........................TRANSPOSICION DE MATRICES");
Console.WriteLine("5........................MATRIZ INVERSA");
Console.WriteLine("6........................MULTIPLICAR UNA MATRIZ POR UN ESCALAR");
Console.WriteLine("7........................SALIR");
Console.WriteLine("");
Console.Write("\nIngrese el digito de la opción que desea escoger: ");
opc = Console.ReadLine();
Console.Clear();
switch (opc)
{
case "1":
{
Console.Write("Numero de Filas: ");
fila = Convert.ToInt32(Console.ReadLine());
Console.Write("Numero de Columnas: ");
columna = Convert.ToInt32(Console.ReadLine());
M1 = new int[fila, columna];
M2 = new int[fila, columna];
MR = new int[fila, columna];
clsMatrices.CargaMatrices(M1, M2);
clsMatrices.SumaMatrices(M1, M2, MR);
Console.WriteLine("El Resultado es:");
clsMatrices.MostrarMatrizResultado(MR);
Console.ReadLine();
Console.Clear();
}
break;
case "2":
{
Console.Write("Numero de Filas: ");
fila = Convert.ToInt32(Console.ReadLine());
Console.Write("Numero de Columnas: ");
columna = Convert.ToInt32(Console.ReadLine());
M1 = new int[fila, columna];
M2 = new int[fila, columna];
MR = new int[fila, columna];
clsMatrices.CargaMatrices(M1, M2);
clsMatrices.RestaMatrices(M1, M2, MR);
Console.WriteLine("El Resultado es:");
clsMatrices.MostrarMatrizResultado(MR);
Console.ReadLine();
Console.Clear();
}
break;
case "3":
{
Boolean MsgValida;
do
{
Console.WriteLine("De la Matriz 1:");
Console.Write("Numero de Filas: ");
fila = Convert.ToInt32(Console.ReadLine());
Console.Write("Numero de Columnas: ");
columna = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("De la Matriz 2:");
Console.Write("Numero de Filas: ");
fila2 = Convert.ToInt32(Console.ReadLine());
Console.Write("Numero de Columnas: ");
columna2 = Convert.ToInt32(Console.ReadLine());
clsMatrices objMatriz = new clsMatrices();
MsgValida = objMatriz.ValidaMatrizMul(fila, columna, fila2, columna2);
if (MsgValida == true)
{
M1 = new int[fila, columna];
M2 = new int[fila2, columna2];
MR = new int[fila, columna2];
clsMatrices.CargaMatricesM1xN(M1);
clsMatrices.CargaMatricesM2xN(M2);
clsMatrices.MultiplicaMatrices(M1, M2, MR,fila,columna,columna2);
Console.WriteLine("El Resultado es:");
clsMatrices.MostrarMatrizResultado(MR);
Console.ReadLine();
Console.Clear();
}
else
{
Console.WriteLine("Error de Concepto");
Console.Clear();
}
} while (MsgValida != true);
}
break;
case "4":
{
Boolean MsgdeValidez;
do
{
Console.Write("Numero de Filas: ");
fila = Convert.ToInt32(Console.ReadLine());
Console.Write("Numero de Columnas: ");
columna = Convert.ToInt32(Console.ReadLine());
clsMatrices objMatriz2 = new clsMatrices();
MsgdeValidez = objMatriz2.ValidaMatrizTranspuesta(fila, columna);
if (MsgdeValidez == true)
{
M1 = new int[fila, columna];
MR = new int[fila, columna];
clsMatrices.CargaMatricesT(M1);
clsMatrices.CargaMatrizTraspuesta(M1, MR, fila, columna);
Console.WriteLine("El Resultado es:");
clsMatrices.MostrarMatrizResultado(MR);
Console.ReadLine();
Console.Clear();
}
else
{
Console.WriteLine("La Matriz que se quiere transponer debe ser una Matriz cuadrada");
Console.Clear();
}
} while (MsgdeValidez != true);
}
break;
case "5":
{
Double Determinante;
Console.WriteLine("Ingrese una Matriz Cuadrada de 2x2: ");
int Tamaño = 2;
Moriginal = new Double[Tamaño,Tamaño];
Mres=new Double[Tamaño,Tamaño];
Minversa = new Double[Tamaño, Tamaño];
clsMatrices.CargaMatricesMoriginal(Moriginal);
clsMatrices objMatriz = new clsMatrices();
Determinante= objMatriz.CalculaDeterminante(Moriginal);
if (Determinante != 0)
{
Console.WriteLine("La Matriz es inversible");
Console.ReadLine();
clsMatrices.InvierteMatriz(Moriginal, Mres);
clsMatrices.CalculaMatrizInversa(Mres, Minversa, Determinante);
Console.WriteLine("El Resultado es:");
clsMatrices.MostrarMatrizResultado(Minversa);
Console.ReadLine();
}
else
{
Console.WriteLine("La Matriz no es inversible");
Console.ReadLine();
}
Console.Clear();
}
break;
case "6":
{
int Escalar;
Console.Write("Numero de Filas de la Matriz: ");
fila = Convert.ToInt32(Console.ReadLine());
Console.Write("Numero de Columnas de la Matriz: ");
columna = Convert.ToInt32(Console.ReadLine());
Console.Write("Ingrese el Escalar que va a multiplicar ");
Escalar = Convert.ToInt32(Console.ReadLine());
M1 = new int[fila, columna];
MR = new int[fila, columna];
clsMatrices.CargaMatricesT(M1);
clsMatrices.CargaEscalarXMatriz(M1, MR, fila, columna, Escalar);
Console.WriteLine("El Resultado es:");
clsMatrices.MostrarMatrizResultado(MR);
Console.ReadLine();
Console.Clear();
}
break;
case "7":
{
opc = "7";
Console.WriteLine("Gracias por usar el Programa");
Console.ReadLine();
}
break;
default:
{
Console.WriteLine("La opcion que escogio no es valida");
Console.ReadLine();
Console.Clear();
}
break;
}
}while(opc!="7");
}
}
}
Y en la clase ClMatriz
using System;
using System.Collections.Generic;
using System.Text;
namespace CMatrices
{
class clsMatrices
{
int[,] A, B, C;
public clsMatrices()
{
}
public static void CargaMatrices(int[,] M1, int[,] M2)
{
for (int i = 0; i < M1.GetLength(0); i++)
{
for( int j=0 ; j < M1.GetLength(1) ; j++ )
{
Console.Write("\n Valor de la Matriz 1:[F{"+(i+1)+"},C{"+(j+1)+"}] :");
M1[i,j]=Convert.ToInt32(Console.ReadLine());
Console.Write("\n Valor de la Matriz 2: [F{"+(i+1)+"},C{"+(j+1)+"}] :");
M2[i, j] = Convert.ToInt32(Console.ReadLine());
}
}
}
public static void MostrarMatrizResultado(int[,] MR)
{
for (int i = 0; i < MR.GetLength(0); i++)
{
for (int j = 0; j < MR.GetLength(1); j++)
{
Console.WriteLine("F[{" + (i + 1) + "},C{" + (j + 1) + "}] : " + MR[i, j]);
}
}
}
public static void MostrarMatrizResultado(Double[,] Minversa)
{
for (int i = 0; i < Minversa.GetLength(0); i++)
{
for (int j = 0; j < Minversa.GetLength(1); j++)
{
Console.WriteLine("F[{" + (i + 1) + "},C{" + (j + 1) + "}] : " + Minversa[i, j]);
}
}
}
public static void SumaMatrices(int[,] M1, int[,] M2, int[,] MR)
{
for (int i = 0; i < M1.GetLength(0); i++)
{
for (int j = 0; j < M2.GetLength(1); j++)
{
MR[i, j] = M1[i, j] + M2[i, j];
}
}
}
public static void RestaMatrices(int[,] M1, int[,] M2, int[,] MR)
{
for (int i = 0; i < M1.GetLength(0); i++)
{
for (int j = 0; j < M2.GetLength(1); j++)
{
MR[i, j] = M1[i, j] - M2[i, j];
}
}
}
public Boolean ValidaMatrizMul(int Fila, int Columna, int Fila2, int Columna2)
{
Boolean mensaje;
if (Columna == Fila2)
{
Console.WriteLine("Se puede llevar acabo la multiplicación");
mensaje = true;
Console.ReadLine();
}
else
{
Console.WriteLine("No se puede llevar acabo la multiplicación");
mensaje = false;
Console.ReadLine();
}
return mensaje;
}
public static void CargaMatricesM1xN(int[,] M1)
{
for (int i = 0; i < M1.GetLength(0); i++)
{
for (int j = 0; j < M1.GetLength(1); j++)
{
Console.Write("\n Valor de la Matriz 1:[F{" + (i + 1) + "},C{" + (j + 1) + "}] :");
M1[i, j] = Convert.ToInt32(Console.ReadLine());
}
}
}
public static void CargaMatricesM2xN(int[,] M2)
{
for (int i = 0; i < M2.GetLength(0); i++)
{
for (int j = 0; j < M2.GetLength(1); j++)
{
Console.Write("\n Valor de la Matriz 2: [F{" + (i + 1) + "},C{" + (j + 1) + "}] :");
M2[i, j] = Convert.ToInt32(Console.ReadLine());
}
}
}
public static void MultiplicaMatrices(int[,] M1, int[,] M2, int[,] MR, int fila,int columna, int columna2)
{
for (int i = 0; i < fila; i++)
{
for (int j = 0; j < columna2; j++)
{
MR[i, j] = 0;
for (int K = 0; K
MR[i, j] += M1[i, K] * M2[K, j];
}
}
}
}
public static void CargaMatricesT(int[,] M1)
{
for (int i = 0; i < M1.GetLength(0); i++)
{
for (int j = 0; j < M1.GetLength(1); j++)
{
Console.Write("\n Valor de la Matriz :[F{" + (i + 1) + "},C{" + (j + 1) + "}] :");
M1[i, j] = Convert.ToInt32(Console.ReadLine());
}
}
}
public Boolean ValidaMatrizTranspuesta(int Fila, int Columna)
{
Boolean mensaje;
if (Fila == Columna)
{
Console.WriteLine("Se puede obtener la matriz transpuesta");
mensaje = true;
Console.ReadLine();
}
else
{
Console.WriteLine("No se puede obtener la matriz transpuesta");
mensaje = false;
Console.ReadLine();
}
return mensaje;
}
public static void CargaMatrizTraspuesta(int[,] M1, int[,] MR, int fila, int columna)
{
for (int i = 0; i < fila; i++)
{
for (int j = 0; j < columna; j++)
{
MR[i, j] = M1[j, i];
}
}
}
public static void CargaMatricesMoriginal(Double[,] Moriginal)
{
for (int i = 0; i < Moriginal.GetLength(0); i++)
{
for (int j = 0; j < Moriginal.GetLength(1); j++)
{
Console.Write("\n Valor de la Matriz : [F{" + (i + 1) + "},C{" + (j + 1) + "}] :");
Moriginal[i, j] = Convert.ToDouble(Console.ReadLine());
}
}
}
public double CalculaDeterminante(Double[,] Moriginal )
{
Double Determinante;
Determinante = (Moriginal[0, 0] * Moriginal[1, 1])+((-1*(Moriginal[1,0]*(Moriginal[0,1]))));
return Determinante;
}
public static void InvierteMatriz(Double[,] Moriginal, Double[,] Mres)
{
Mres[0, 0] = Moriginal[1, 1];
Mres[1, 1] = Moriginal[0, 0];
Mres[0, 1] = -1*(Moriginal[0, 1]);
Mres[1, 0] = -1 * (Moriginal[1, 0]);
}
public static void CalculaMatrizInversa(Double[,] Mres, Double[,] Minversa, Double Determinante )
{
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
Minversa[i, j] =Mres[i,j]/Determinante;
}
}
}
public static void CargaEscalarXMatriz(int[,] M1, int[,] MR, int fila, int columna,int Escalar)
{
for (int i = 0; i < fila; i++)
{
for (int j = 0; j < columna; j++)
{
MR[i, j] = M1[i, j]*Escalar;
}
}
}
}
}

No hay comentarios:
Publicar un comentario