В каждом столбце матрицы обменять элементы главной и побочной диагоналей - C#
Формулировка задачи:
Создать файд с целой квадратной матрицей. Считать матрицу из файла. Вывести ее в консоль. В каждом столбце обменять элементы главной и побочной диагоналей. Преобразованную матрицу вывести. Записать матрицу в новый файл.
пс, сижу на экзамене очень поможете=)
Решение задачи: «В каждом столбце матрицы обменять элементы главной и побочной диагоналей»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.IO;
class Program
{
static void Main(string[] args)
{
//Считываем матрицу из файла
int[,] arr = LoadFromFile("matr.txt");
//Выводим на экран
Print(arr);
//Обмениваем элементы диагоналей
arr = Trade(arr);
//Выводим на экран
Print(arr);
//Записываем в новый файл
SaveToFile(arr, "matr1.txt");
Console.ReadKey();
}
static int[,] LoadFromFile(string fileName)
{
int[,] arr = new int[0, 0];
List<string[]> str_arr = new List<string[]>();
try
{
using (StreamReader sr = new StreamReader(fileName))
{
string line;
string[] tmp;
int max = -1; ;
while ((line = sr.ReadLine()) != null)
{
tmp = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
str_arr.Add(tmp);
max = max < tmp.Length ? tmp.Length : max;
}
arr = new int[max, max];
int i = 0, j;
foreach (var item in str_arr)
{
j = 0;
foreach (var items in item)
{
int k;
int.TryParse(items, out k);
arr[i, j++] = k;
}
i++;
}
}
}
catch
{
Console.WriteLine("Прочитать файл не удалось!");
}
return arr;
}
static void SaveToFile(int[,] arr, string fileName)
{
try
{
using (StreamWriter sw = new StreamWriter(fileName))
{
string str = "";
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
str += " " + arr[i, j];
sw.WriteLine(str);
str = "";
}
}
}
catch
{
Console.WriteLine("Сохранить файл не удалось!");
}
}
static public void Print(int[,] arr)
{
Console.Write("\n\n");
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
Console.Write(" " + arr[i, j]);
Console.Write("\n");
}
}
static public int[,] Trade(int[,] arr)
{
int k = arr.GetLength(0) - 1;
for (int i = 0; i <= k; i++)
{
int t = arr[i, i];
arr[i, i] = arr[i, k - i];
arr[i, k - i] = t;
}
return arr;
}
}