Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sea T¨:P2
Descripcion
Entrada: un archivo de texto con el siguiente formato ejemplo:
Para hallar el determinate de una matriz, el archivo debe tener el siguiente formato:
det
4x4
1,6,5,2
0,9,5,3
0,8,10,4
0,4,5,5
y el resto es la matriz en si
C#
case "+":
ImprimirMatriz(matris.Suma(operando2));
break;
case "-":
ImprimirMatriz(matris.Resta(operando2));
break;
case ".":
ImprimirMatriz(matris.EscalarMult(escalar));
break;
case "det":
Console.WriteLine(matris.Determinante());
break;
case "cramer":
ImprimeCramer(vectorInc, matris.Cramer(vectorTer))
;
break;
case "inv":
ImprimirMatriz(matris.Inversa());
break;
case "t":
ImprimirMatriz(matris.Transpuesta());
break;
case "*":
ImprimirMatriz(matris.ProductoMatrices(operando2))
;
break;
case "gauss":
ImprimirMatriz(matris.Gauss());
break;
C#
using System;
using System.Collections.Generic;
using System.Text;
namespace CalculadoraMatrices
{
class Matrix
{
decimal[,] matriz;
public Matrix(decimal[,] m)
{
matriz = m;
}
return Sumada;
}
return multiplicada;
}
return Suma(matriz1.EscalarMult(-1));
}
}
}
return result;
}
else
{
for (int i = 0; i < m.GetLength(0); i++)
{
determinante += (decimal)Math.Pow(-
1, i) * m[i, 0] * Determinante(ElimFilCol(m, i, 0));
}
}
return determinante;
}
else
sustituida[i, j] = m[i, j];
}
}
return sustituida;
}
}
decimal[,] EscalarMult(decimal[,] matriz, decimal escalar)
{
decimal[,] multiplicada = new decimal[matriz.GetLength(0),
matriz.GetLength(1)];
return multiplicada;
}
public decimal[,] ProductoMatrices(decimal[,] b)
{
if (matriz.GetLength(1) != b.GetLength(0))
throw new Exception("No se puede multiplicar");
decimal[,] result = new decimal[matriz.GetLength(0), b.Get
Length(1)];
for (int i = 0; i < result.GetLength(0); i++)
for (int j = 0; j < result.GetLength(1); j++)
for (int k = 0; k < matriz.GetLength(1); k++)
{
result[i, j] += matriz[i, k] * b[k, j];
}
return result;
}
public decimal[,] Gauss()
{
bool sePuedeContinuar = true;
decimal[,] result = new decimal[matriz.GetLength(0), matri
z.GetLength(1)];
for (int i = 0; i < result.GetLength(0); i++)
{
for (int j = 0; j < result.GetLength(1); j++)
{
result[i, j] = matriz[i, j];
}
}
for (int i = 0; i < Math.Min(result.GetLength(0), result.G
etLength(1)); i++)
{
if (result[i, i] == 0)
{
for (int j = i + 1; j < result.GetLength(0); j++)
{
if (result[j, i] != 0)
{
IntercambiarFilas(result, i, j);
sePuedeContinuar = true;
break;
}
else
{
sePuedeContinuar = false;
}
}
}
if (sePuedeContinuar)
{
AnulaColumna(result, i);
}
}
for (int i = 0; i < result.GetLength(0); i++)
{
for (int j = 0; j < result.GetLength(1); j++)
{
result[i, j] = Math.Round(result[i, j], 2);
}
}
return result;
}
}
}
}
}
C#
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace CalculadoraMatrices
{
class Program
{
static decimal[,] operando1;
static decimal[,] operando2;
static string operador;
static decimal escalar;
static string[] vectorInc;
static decimal[] vectorTer;
switch (operador)
{
case "+":
ImprimirMatriz(matris.Suma(operando2));
break;
case "-":
ImprimirMatriz(matris.Resta(operando2));
break;
case ".":
ImprimirMatriz(matris.EscalarMult(escalar));
break;
case "det":
Console.WriteLine(matris.Determinante());
break;
case "cramer":
ImprimeCramer(vectorInc, matris.Cramer(vectorTer))
;
break;
case "inv":
ImprimirMatriz(matris.Inversa());
break;
case "t":
ImprimirMatriz(matris.Transpuesta());
break;
case "*":
ImprimirMatriz(matris.ProductoMatrices(operando2))
;
break;
case "gauss":
ImprimirMatriz(matris.Gauss());
break;
}
Console.ReadLine();
}
private static void Leer()
{
StreamReader reader = new StreamReader("Intput.txt");
operador = reader.ReadLine();
if (operador == ".")
escalar = decimal.Parse(reader.ReadLine());
string[] orden = reader.ReadLine().Split('x');
string[] aux = new string[0];
int m = int.Parse(orden[0]);
int n = int.Parse(orden[1]);
operando1 = new decimal[m, n];
for (int i = 0; i < m; i++)
{
aux = reader.ReadLine().Split(',');
Console.WriteLine();
}
}
public static void ImprimeCramer(string[] s, decimal[] v)
{
for (int i = 0; i < v.Length; i++)
{
Console.WriteLine(s[i] + " = " + Convert.ToString(v[i]
));
}
}
}
}
nota debe asugurase de tener un archivo con el formato correcto y especificar la ruta en la
siguiente linea de codigo :