Procesamiento de Matrices y Ficheros en C#
Introducción al Código en C#
A continuación, se presenta la implementación de la clase Practica27, diseñada para realizar operaciones de lectura, procesamiento y escritura de matrices bidimensionales utilizando ficheros de texto en C#.
Código Fuente
class Practica27
{
static int LeerLineaTexto(StreamReader sr)
{
int valor = 0;
string linea = sr.ReadLine();
if (linea != null) valor = Convert.ToInt32(linea);
return valor;
}
static int[,] LeerMatriz(string path)
{
StreamReader sr = new StreamReader(path);
int filas = LeerLineaTexto(sr);
int columnas = LeerLineaTexto(sr);
int[,] m = new int[filas, columnas];
for (int fila = 0; fila < m.GetLength(0); fila++)
{
for (int col = 0; col < m.GetLength(1); col++)
{
m[fila, col] = LeerLineaTexto(sr);
}
}
sr.Close();
return m;
}
static string StringArray(int[,] m)
{
string salida = "";
for (int fila = 0; fila < m.GetLength(0); fila++)
{
for (int col = 0; col < m.GetLength(1); col++)
{
salida += string.Format("{0,4} ", m[fila, col]);
}
salida += "\r\n";
}
return salida;
}
static void AñadirAFichero(string path, string texto)
{
StreamWriter sw = new StreamWriter(path, true);
sw.WriteLine("\r\n{0}", texto);
sw.Close();
}
static int SumaFila(int[,] m, int fila)
{
int suma = 0;
for (int col = 0; col < m.GetLength(1); col++)
{
suma += m[fila, col];
}
return suma;
}
static int HallarFilaSumaMaxima(int[,] m)
{
int filaSumaMax = 0, sumaMax = SumaFila(m, 0);
for (int fila = 1; fila < m.GetLength(0); fila++)
{
int suma = SumaFila(m, fila);
if (sumaMax < suma)
{
sumaMax = suma;
filaSumaMax = fila;
}
}
return filaSumaMax;
}
static void Main()
{
string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
string carpeta = desktop + @"\MisDatos\";
Console.Write("Nombre del fichero de entrada? ");
string entrada = Console.ReadLine();
Console.Write("Nombre del fichero de salida? ");
string salida = Console.ReadLine();
int[,] matriz1 = LeerMatriz(carpeta + entrada);
int filaSumaMaxima = HallarFilaSumaMaxima(matriz1);
Console.WriteLine(StringArray(matriz1));
Console.WriteLine("suma maxima en fila {0}", filaSumaMaxima);
string pathSalida = carpeta + salida;
AñadirAFichero(pathSalida, StringArray(matriz1));
AñadirAFichero(pathSalida, string.Format("suma maxima en fila {0}", filaSumaMaxima));
Console.ReadLine();
}
}Funcionalidades Principales
Este programa realiza las siguientes tareas esenciales:
- Lectura de archivos: Utiliza
StreamReaderpara extraer filas, columnas y los valores numéricos que componen la matriz desde un archivo de texto. - Manipulación de matrices: Almacena y procesa los datos en un arreglo bidimensional
int[,]. - Cálculos algorítmicos: Suma los elementos de cada fila e identifica cuál de ellas posee el valor máximo mediante la función
HallarFilaSumaMaxima. - Escritura de resultados: Emplea
StreamWriterpara añadir tanto la representación visual de la matriz como el resultado final en un fichero de salida ubicado en el escritorio.