Функции сложения матриц и умножения матриц на число - 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);
}
}
}
}