Przykład programu realizującego dodawanie oraz mnożenie macierzy. Użytkownik za pomocą konsoli wprowadza dane określające macierze: w pierwszej kolejności rozmiar, a następnie wartości liczbowe z których dana macierz ma się składać.
Aplikacja wykonuje działania dodawania oraz mnożenia macierzy, a następnie zapisuje wyniki do pliku *.txt.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace cw._6_macierze
{
class Program
{
static void Main(string[] args)
{
int a = 0,
b = 0,
c = 0,
d = 0;
Console.ForegroundColor = ConsoleColor.Yellow;
//Console.WriteLine("Buffor: {0}", Console.BufferHeight);
Console.WriteLine("Podaj rozmiar pierwszej macierzy (zatwierdzajac klawiszem ENTER): ");
a = int.Parse(Console.ReadLine());
b = int.Parse(Console.ReadLine());
Console.WriteLine("Podaj rozmiar drugiej macierzy (zatwierdzajac klawiszem ENTER): ");
c = int.Parse(Console.ReadLine());
d = int.Parse(Console.ReadLine());
Console.WriteLine("M1[{0}][{1}], M2[{2}][{3}]", a, b, c, d);
int[,] m1 = new int[a, b];
int[,] m2 = new int[c, d];
int[,] m1m2 = new int[a, b];
Console.WriteLine("Macierz M1 sklada sie z: {0} liczb, podaj je (zatwierdzajac klawiszem ENTER):", a * b);
for (int i = 0; i < a; i++)
for (int j = 0; j < b; j++)
{
m1[i, j] = int.Parse(Console.ReadLine());
}
Console.WriteLine("Macierz M2 sklada sie z: {0} liczb, podaj je (zatwierdzajac klawiszem ENTER):", c * d);
for (int i = 0; i < c; i++)
for (int j = 0; j < d; j++)
{
m2[i, j] = int.Parse(Console.ReadLine());
}
Console.Clear();
Console.WriteLine("M1: ");
for (int i = 0; i < a; i++)
{
for (int j = 0; j < b; j++)
{
Console.Write("{0} ", m1[i, j]);
}
Console.WriteLine("");
}
Console.WriteLine("\nM2: ");
for (int i = 0; i < c; i++)
{
for (int j = 0; j < d; j++)
{
Console.Write("{0} ", m2[i, j]);
}
Console.WriteLine("");
}
#region Dodawanie macierzy
Console.WriteLine("\nDodanie macierzy: ");
for (int i = 0; i < a; i++)
for (int j = 0; j < b; j++)
{
m1m2[i, j] = m1[i, j] + m2[i, j];
}
Console.WriteLine("\nM1 + M2:");
for (int i = 0; i < a; i++)
{
for (int j = 0; j < b; j++)
{
Console.Write("{0} ", m1m2[i, j]);
}
Console.WriteLine("");
}
#endregion
#region Mnożenie macierzy
Console.WriteLine("\nMnozenie macierzy:");
for (int i = 0; i < a; i++)
{
for (int k = 0; k < d; k++)
{
for (int j = 0; j < b; j++)
{
m1m2[i, k] += m1[i, j] * m2[j, k];
}
}
}
Console.WriteLine("\nM1 x M2: ");
for (int i = 0; i < a; i++)
{
for (int k = 0; k < d; k++)
{
Console.Write("{0} ", m1m2[i, k]);
}
Console.WriteLine("");
}
#endregion
#region Zapis do pliku
FileStream fs = new FileStream("plik.txt", FileMode.Create);
//FileStream fs = new FileStream("plik.txt", FileMode.Append);
using (StreamWriter zapisz_out = new StreamWriter(fs))
//using() - odzyszczanie, zapisz_out.Close = zapisz_out.Dispose()
{
for (int i = 0; i < a; i++)
{
for (int k = 0; k < d; k++)
{
zapisz_out.Write("{0} ", m1m2[i, k]);
}
zapisz_out.WriteLine("");
}
}
fs.Close();
#endregion
Console.ReadKey();
}
}
}