Функции сложения матриц и умножения матриц на число - C#

Узнай цену своей работы

Формулировка задачи:

Найти k – количество нечетных чисел ниже побочной диагонали матрицы T и m – количество нечетных чисел матрицы C.Если k>m, найти H=(m)*T+C, иначе найти F=k*(C+T)+T. Нужно решить задачу. Написать функции ввода, вывода матриц, умножение матрицы на число и сложение матриц. Я сделала сначала без функций и процедур. Все работала. Стала функциями делать.(пока сделала только для матрицы Н) И Матрица H пишет в конце все нули(( тест: T=1, 3, 3, 3,3,3,3,3,3 C= 1 1 1,2,1,2,2,1,1 Ответ: H= 1.5 , 2, 2.5, 3.5, 2.5, 3.5, 3.5, 2.5, 2.5 Помогите, пожалуйста, разобраться
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static int Nechet(int n, float[,] CT)
        {
            int i=0, j=0;
            int km=0;
            for (i = 0; i < n; i++)
            {
                for (j = n-i; j < n; j++)
                {
                     if (CT[i, j] % 2 != 0)
                     {
                         km=km+1;
                     }
                    }
                }
            return (km);
        }
 
        static void inmass(int a, out float[,] X)
        {
            int i=0, j=0;
            X = new float[a, a];
            for (i = 0; i < a; i++)
            {
                for (j = 0; j < a; j++)
                    X[i, j] = Convert.ToInt32(Console.ReadLine());
            }
        }
        static void outmass(int a, float[,] X)
        {
            int i = 0, j = 0;
            for (i = 0; i < a; i++)
            {
                Console.WriteLine();
                for (j = 0; j < a; j++)
                { Console.Write("{0}\t", X[i, j]); }
            }
            Console.WriteLine();
        }
        static  void umnoj(float km, int a, float[,] X)
        {
            int i = 0, j = 0;
            float[,] M = new float[10, 10];
            for (i = 0; i < a; i++)
            {
                for (j = 0; j < a; j++)
                {
                    M[i, j] = km * X[i, j];
                }
            }
        }
        static void plus(int a, float[,]X, float[,] Y)
        {
            int i = 0, j = 0;
            float[,] M = new float[10, 10];
            for (i = 0; i < a; i++)
            {
                for (j = 0; j < a; j++)
                {
                    M[i, j] = X[i, j] + Y[i, j];
                }
            }
        }

        static void Main(string[] args)
        {
            int i=0;
            int j=0;
            int k;
            float m;
            int n;
            float[,] C = new float[10, 10];
            float[,] T = new float[10, 10];
            float[,] H = new float[10, 10];
            float[,] F = new float[10, 10];
            float[,] M = new float[10, 10];
            Console.WriteLine("Введите размерность матриц T и C");
            n = Convert.ToInt32(Console.ReadLine());
            if (n < 2 || n > 10)
            {
                Console.WriteLine("Размерность матрицы должна быть не больше 10 и не меньше 2");
            }
            else
                Console.WriteLine("Введите матрицу T");
            inmass(n, out T);
            outmass(n,T);
            Console.WriteLine("Введите матрицу С");
            inmass(n, out C);
            outmass(n, C);
            Console.WriteLine();
            Console.WriteLine();
           
            k= Nechet(n,T);
            m = Nechet(n, C);
            if (k > m)
            {
                Console.WriteLine("Матрица Н=");
 
                umnoj(m, n, T);
                plus(n, T, C);
                outmass(n,T);
            }

                 /*for (i = 0; i < n; i++)
                {
                    for (j = 0; j < n; j++)
                    { M[i, j] =  T[i, j] * p; }
                }
                for (i = 0; i < n; i++)
                {
                    for (j = 0; j < n; j++)
                    {
                        H[i, j] = M[i, j] + C[i, j];
                        Console.Write("{0}\t", H[i, j]);
                    } 
                    Console.WriteLine();
                }
            }*/
            else
            {
                Console.WriteLine("Матрица F=");
                for (i = 0; i < n; i++)
                {
                    for (j = 0; j < n; j++)
                    {
                        F[i, j] = C[i, j] + T[i, j];
                    }
                }
                for (i = 0; i < n; i++)
                {
                    for (j = 0; j < n; j++)
                    {
                        M[i, j] = k * F[i, j];
                    }
                }
                for (i = 0; i < n; i++)
                {
                    for (j = 0; j < n; j++)
                    {
                        F[i, j] = M[i, j] + T[i, j];
                        Console.Write("{0}\t", F[i, j]);
                    }
                    Console.WriteLine();
                }
            }
            Console.ReadKey();
        }
    }
}

Решение задачи: «Функции сложения матриц и умножения матриц на число»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
 
namespace ConsoleApplication2
{
    class Program
    {
        static void inmass(int a, out float[,] X)
        {
            int i = 0, j = 0;
            X = new float[a, a];
            for (i = 0; i < a; i++)
            {
                for (j = 0; j < a; j++)
                {  
                    Console.WriteLine("X[" + i + "," + j + "] =");
                    X[i, j] = Convert.ToInt32(Console.ReadLine());
                }
            }
        }
 
        static void outmass(int a, float[,] X)
        {
            int i = 0, j = 0;
            for (i = 0; i < a; i++)
            {
                Console.WriteLine();
                for (j = 0; j < a; j++)
                { Console.Write("{0}\t", X[i, j]); }
            }
            Console.WriteLine();
        }
 
        static int Nechet(int n, float[,] CT)
        {
            int i = 0, j = 0;
            int km = 0;
            for (i = 0; i < n; i++)
            {
                for (j = n - i; j < n; j++)
                {
                    if (CT[i, j] % 2 != 0)
                    {
                        km = km + 1;
                    }
                }
            }
            return (km);
        }
 
        static float[,] umnojnumber(float chislo, int rozriad, float[,] Massiv)
        {
            int i = 0, j = 0;
            float[,] M = new float[rozriad, rozriad];
            for (i = 0; i < rozriad; i++)
            {
                for (j = 0; j < rozriad; j++)
                {
                    M[i, j] = chislo * Massiv[i, j];
                }
            }
 
            return M;
        }
 
        static float[,] plus(int rozriad, float[,] X, float[,] Y)
        {
            int i = 0, j = 0;
            float[,] M = new float[rozriad, rozriad];
            for (i = 0; i < rozriad; i++)
            {
                for (j = 0; j < rozriad; j++)
                {
                    M[i, j] = X[i, j] + Y[i, j];
                }
            }
 
            return M;
        }
 
        static void Main(string[] args)
        {
            int i = 0;
            int j = 0;
            int k;
            float m;
            int n;
           
            Console.WriteLine("Введите размерность матриц T и C");
            n = Convert.ToInt32(Console.ReadLine());
            float[,] C = new float[n, n];
            float[,] T = new float[n, n];
            float[,] H = new float[n, n];
            float[,] F = new float[n, n];
            float[,] M = new float[n, n];
            if (n < 2 || n > 10)
            {
                Console.WriteLine("Размерность матрицы должна быть не больше 10 и не меньше 2");
            }
            else
                Console.WriteLine("Введите матрицу T");
            inmass(n, out T);
            outmass(n, T);
            
            
            Console.WriteLine("Введите матрицу С");
            inmass(n, out C);
            outmass(n, C);
 
            Console.WriteLine();
            Console.WriteLine();
 
            k = Nechet(n, T);
            m = Nechet(n, C);
            if (k > m)
            {
                Console.WriteLine("Матрица Н=");
 
                T = umnojnumber(m, n, T);
                H = plus(n, T, C);
                outmass(n, H);
 
                Thread.Sleep(2000);
 
            }
            else if (m > k)
            {
                Console.WriteLine("Матрица F=");
                M = plus(n, T, C);
                M = umnojnumber(k, n, M);
                F = plus(n, T, M);
                outmass(n, F);
 
                Thread.Sleep(2000);
            }
            else
            {
                Console.WriteLine("k равняется m");
                Thread.Sleep(2000);
            }
 
        }
 
    }
}

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


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

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

9   голосов , оценка 4 из 5