Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- class Program
- {
- static int RowsCount(int[,] matrix)
- {
- return matrix.GetUpperBound(0) + 1;
- }
- static int ColumnsCount(int[,] matrix)
- {
- return matrix.GetUpperBound(1) + 1;
- }
- static int[,] Read_Matrix(string name, StreamReader reader)
- {
- Console.Write("Количество строк матрицы {0}: ", name);
- int n = Convert.ToInt32(Console.ReadLine());
- Console.Write("Количество столбцов матрицы {0}: ", name);
- int m = Convert.ToInt32(Console.ReadLine());
- int[,] matrix = new int[n, m];
- for (int i = 0; i < n; i++)
- {
- string s = "";
- string tmp;
- int count = 0;
- while (true)
- {
- tmp = Convert.ToString(Convert.ToChar(reader.Read()));
- if (tmp == " ")
- {
- if (s != "")
- {
- matrix[i, count] = Convert.ToInt32(s);
- count++;
- }
- s = "";
- continue;
- }
- if (tmp == "\n")
- {
- if(s != "")
- matrix[i, count] = Convert.ToInt32(s);
- break;
- }
- s = s + tmp;
- }
- }
- return matrix;
- }
- static void Print_Matrix(int[,] matrix, StreamWriter writer)
- {
- for (int i = 0; i < RowsCount(matrix); i++)
- {
- for (int j = 0; j < ColumnsCount(matrix); j++)
- writer.Write(matrix[i, j].ToString().PadLeft(6));
- writer.WriteLine();
- }
- }
- static int[,] Matrix_Mult(int[,] matrixA, int[,] matrixB)
- {
- if (ColumnsCount(matrixA) != RowsCount(matrixB))
- throw new Exception("ERROR: Умножение не возможно.\n\tКоличество столбцов первой матрицы не равно количеству строк второй матрицы.");
- int[,] matrixC = new int[RowsCount(matrixA), ColumnsCount(matrixB)];
- for (int i = 0; i < RowsCount(matrixA); i++)
- for (int j = 0; j < ColumnsCount(matrixB); j++)
- {
- matrixC[i, j] = 0;
- for (int k = 0; k < ColumnsCount(matrixA); k++)
- matrixC[i, j] += matrixA[i, k] * matrixB[k, j];
- }
- return matrixC;
- }
- static void Main(string[] args)
- {
- string input_file = "matrix.txt";
- string result_file = "result.txt";
- StreamReader reader = new StreamReader(input_file);
- StreamWriter writer = new StreamWriter(result_file, false);
- int[,] a = Read_Matrix("A", reader);
- //Print_Matrix(a, writer);
- reader.Read();
- int[,] b = Read_Matrix("B", reader);
- //Print_Matrix(b, writer);
- int[,] result = Matrix_Mult(a, b);
- Print_Matrix(result, writer);
- reader.Close();
- writer.Close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement