Задача на матрицы, не могу закончить - 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]

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5
Похожие ответы