Функции сложения матриц и умножения матриц на число - 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);
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д