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