Прописать функции - C#
Формулировка задачи:
Само задание: Заданы две целые квадратные матрицы С и Т порядка n 2<=n<=10. Дополнительно заданы два целых числа L и M. Если L<M, то получить матрицу A=L*T+M*C и подсчитать количество положительных элементов в L-ом столбце матрицы T; иначе получить матрицу B=T*L^2+C*M^2 и подсчитать количество положительных элементов в M-ом столбце матрицы C.
Я написала основное, но возникли проблемы с созданием функций для создания новых матриц и подсчета суммы положительных элементов, поэтому прошу о помощи.
Вот мой код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication32
{
class Program
{
static int[,] EnterArray(int[,] arrN, int n)
{
Boolean nBool;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
do
{
Console.Write("Элемент ({0};{1}): ", i, j);
nBool = Int32.TryParse(Console.ReadLine(), out arrN[i, j]);
if (!nBool) { Console.WriteLine("Неправильный ввод данных!"); }
} while (!nBool);
}
}
return arrN;
}
static void WriteArray(int [,] arrN, int n)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write(arrN[i, j] + " ");
}
Console.Write("\n");
}
}
static void Main(string[] args)
{
int n;
Boolean nBool;
do
{
Console.Write("Введите порядок массивов (от 2 до 10): ");
nBool = Int32.TryParse(Console.ReadLine(), out n);
if (!nBool || n < 2 || n > 10)
{
Console.WriteLine("Неправильный ввод данных!");
nBool = false;
}
} while (!nBool);
int[,] arrT = new int[n, n];
Console.WriteLine("Введите элементы массива Т:");
arrT = EnterArray(arrT, n);
int[,] arrC = new int[n, n];
Console.WriteLine("Введите элементы массива C:");
arrC = EnterArray(arrC, n);
Console.WriteLine("Введите l");
float l = Convert.ToSingle(Console.ReadLine());
Console.WriteLine("Введите m");
float m = Convert.ToSingle(Console.ReadLine());
if (l < m)
{
int[,] arrA = new int[n, n];
arrA = ; //прописать функцию m больше
Console.WriteLine("\nМатрица A:");
WriteArray(arrA, n);
}
else
{
int[,] arrB = new int[n, n];
arrB = ; //прописать функцию L больше
Console.WriteLine("\nМатрица B:");
WriteArray(arrB, n);
}
Console.ReadKey();
}
}
}Решение задачи: «Прописать функции»
textual
Листинг программы
using System;
namespace ConsoleApplication17
{
class Program
{
static int[,] EnterArray(int[,] arrN, int n)
{
Boolean nBool;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
do
{
Console.Write("Элемент ({0};{1}): ", i, j);
nBool = Int32.TryParse(Console.ReadLine(), out arrN[i, j]);
if (!nBool) { Console.WriteLine("Неправильный ввод данных!"); }
} while (!nBool);
}
}
return arrN;
}
static void WriteArray(int[,] arrN, int n)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write(arrN[i, j] + " ");
}
Console.Write("\n");
}
}
static void Main(string[] args)
{
int n;
Boolean nBool;
do
{
Console.Write("Введите порядок массивов (от 2 до 10): ");
nBool = Int32.TryParse(Console.ReadLine(), out n);
if (!nBool || n < 2 || n > 10)
{
Console.WriteLine("Неправильный ввод данных!");
nBool = false;
}
} while (!nBool);
int[,] arrT = new int[n, n];
Console.WriteLine("Введите элементы массива Т:");
arrT = EnterArray(arrT, n);
int[,] arrC = new int[n, n];
Console.WriteLine("Введите элементы массива C:");
arrC = EnterArray(arrC, n);
Console.WriteLine("Введите l");
//float l = Convert.ToSingle(Console.ReadLine());
int l = int.Parse(Console.ReadLine());
Console.WriteLine("Введите m");
//float m = Convert.ToSingle(Console.ReadLine());
//числа то целые
int m = int.Parse(Console.ReadLine());
if (l < m)
{
int[,] arrA = new int[n, n];
arrA = GetArraySum0(arrC, arrT, l, m); //прописать функцию m больше
Console.WriteLine("\nМатрица A:");
WriteArray(arrA, n);
GetSumElements(arrA, m);
}
else
{
int[,] arrB = new int[n, n];
arrB = GetArraySum1(arrC, arrT, l, m); //прописать функцию L больше
Console.WriteLine("\nМатрица B:");
WriteArray(arrB, n);
GetSumElements(arrB, m);
}
Console.ReadKey();
}
//A=L*T+M*C
static int[,] GetArraySum0(int[,] ar0, int[,] ar1, int l, int m)
{
int[,] resultArray = new int[ar0.GetLength(0), ar0.GetLength(0)];
//матрицы одного размера
for (int i = 0; i < ar0.GetLength(0); i++)
{
for (int j = 0; j < ar0.GetLength(1); j++)
{
resultArray[i, j] = ar1[i, j] * l + ar0[i, j] * m;
}
}
return resultArray;
}
//B=T*L^2+C*M^2
static int[,] GetArraySum1(int[,] ar0, int[,] ar1, int l, int m)
{
int[,] resultArray = new int[ar0.GetLength(0), ar0.GetLength(0)];
//матрицы одного размера
for (int i = 0; i < ar0.GetLength(0); i++)
{
for (int j = 0; j < ar0.GetLength(1); j++)
{
resultArray[i, j] = ar1[i, j] * (int)Math.Pow(l, 2) + ar0[i, j] * (int)Math.Pow(l, 2);
}
}
return resultArray;
}
static void GetSumElements(int[,] ar, int m)
{
int result = 0;
if(m < ar.GetLength(0))
{
for (int i = 0; i < ar.GetLength(0); i++)
{
if (ar[i, m] > 0)
result += ar[i, m];
}
}
Console.WriteLine("Сумма положительных элементов столбца {0} равна {1}", m, result);
}
}
}