Задача на матрицы, не могу закончить - C#
Формулировка задачи:
Пусть сумма элементов обеих диагоналей матрицы С равна S1, а сумма элементов обеих диагоналей матрицы T равна S2. Если S1 <S2, то найти матрицу Н=А+S1Т, иначе матрицу Z=B+S2(C+T). Здесь A- матрица порядка n, все элементы которой равны S1; B- матрица порядка n, все элементы которой равны S2.
Вот что я смог написать, но проблема в том, что не могу написать результирующие матрицы F и H, а еще выпонить условия для A и B. Прошу помочь пожалуйста.
namespace _1В
{
class Program
{ //ввод матриц
static void Matr(int n, out double[,] M)
{
int i, j;
M = new double[n, n];
for (i = 0; i < n; i++)
{
Console.WriteLine("Введите {0} строку", i + 1);
for (j = 0; j < n; j++) { M[i, j] = Convert.ToDouble(Console.ReadLine()); }
}
}
//введем функцию находящую сумму четных элементов побочной диагонали матрицы
static void diag (int n, double[,] M, out double S)
{
int i;
S=0;
for (i = 0; i < n; i++)
{
S = S + M[i, n+1+i];
}
}
//функция сложения матриц
static void SumMatr(int n,int k1, double[,] M, int k2, double[,] N, out double[,] R)
{
R=new double[n,n];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
R[i, j] = x[i, j] + y[i, j];
}
}
}
//функция вывода матрицы
static void OutMatr(int n, double[,] M)
{
for(int i=0; i<n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write("{0} ", M[i,j]); }
Console.WriteLine();
}
}
static void Main(string[] args)
{
int n;
Console.WriteLine("Введите порядок матриц C и T, 2<=n<=10");
n = Convert.ToInt32(Console.ReadLine());
if (n < 2 || n > 10)
{ Console.WriteLine("Ошибка, n<2 или n>10"); }
double[,] C = new double[n, n];
Console.WriteLine("Введите матрицу С");
Matr(n, out C);
double[,] T = new double[n, n];
Console.WriteLine("Введите матрицу T");
Matr(n, out T);
double S;
diag(n, C, out S);
Console.WriteLine("Сумма элементов главной и побочной диагонали матрицы С: {0}",S);
double St;
diag(n, T, out St);
Console.WriteLine("Сумма элементов главной и побочной диагонали матрицы Т: {0}",St);
if(S>St)
{
double[,] H=new double [n,n];
SumMatr(n,1,A,S,T,out H);
Console.WriteLine("S>St; Матрица H:");
OutMatr(n, H);
}
else
{
double[,] F=new double [n,n];
SumMatr(n,1,B,2,S,C,T,out F);
Console.WriteLine("S<=St; Матрица F:");
OutMatr(n, F);
}
Console.ReadKey();}
}
}Решение задачи: «Задача на матрицы, не могу закончить»
textual
Листинг программы
A[i,j]//или B[i,j]