Составить программу формирования двумерных динамических массивов–матриц
Отчет
по заданию №2 контрольной работы
по программированию на языке c#
Задание
Составить программу формирования двумерных динамических массивов–матриц А и B размерностью m x n . Размерность массивов–матриц А и B (m = 8, n = 8) ввести с клавиатуры. Значения элементов массивов–матриц и определяются c помощью выражений:
,,
где и оформить в виде функций в соответствии с выражениями:
при
при
Сформировать двумерный массив–матрицу С, каждый элемент которого определяется произведением соответствующих элементов исходных массивов–матриц А и В.
Сформировать массив–матрицу G, на основе массива–матрицы А, поменяв в нем местами соответствующие элементы столбцов, расположенных на главной и побочной диагоналях.
Определить сумму элементов, лежащих на главной диагонали массива–матрицы G в пользовательской функции. Вывести на экран полученные массивы в виде матриц и результат вычисления суммы.
Исходный код
using System;
using System. Collections. Generic;
using System. Linq;
using System. Text;
namespace ConsoleApplication1
{
class Program
{
//Функция f1(i, j)
static double f1(int i, int j)
{
return 1.0 * (4 * i * j + 2) / (3 * i + j + 1) — i;
}
//Функция f2(i, j)
static double f2(int i, int j)
{
return i + 3 * f1(i, j);
}
//Функция вывода матрицы A с именем Name размерности m на n на экран
static void print(char Name, double[,] A, int m, int n)
{
Console. WriteLine("nМатрица {0}:", Name);
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
Console. Write("{0,8}", Math. Round(A[i, j], 3));
Console. Write("n");
}
}
//Функция вычисления суммы элементов гл. диагонали
static double getSum(double[,] A, int m, int n)
{
int k = m < n? m : n;
double sum = 0;
for (int i = 0; i < k; i++)
sum += A[i, i];
return sum;
}
//Основная функия
static void Main(string[] args)
{
int m, n;
//Ввод размерностей матриц
Console. Clear();
Console. Write("Введите количество строк массивов: ");
m = Convert. ToInt32(Console. ReadLine());
Console. Write("Введите количество столбцов массивов: ");
n = Convert. ToInt32(Console. ReadLine());
double[,] A = new double[m, n];
double[,] B = new double[m, n];
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
A[i, j] = f1(i, j);
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
B[i, j] = f2(i, j);
print(‘A’, A, m, n);
print(‘B’, B, m, n);
//Вычисление матрицы C
double[,] C = new double[m, n];
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
C[i, j] = A[i, j] * B[i, j];
print(‘C’, C, m, n);
//Вычисление матрицы G
double[,] G = new double[m, n];
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
{
if ((i!= j) && (i!= n — j — 1))
G[i, j] = A[i, j];
else if (i == j)
G[i, j] = A[i, n — i — 1];
else
G[i, j] = A[i, i];
}
print(‘G’, G, m, n);
double sum = getSum(G, m, n);
Console. WriteLine("nСумма элементов, лежащих на главной диагонали матрицы G = {0}", Math. Round(sum, 3));
Console. ReadKey();
}
}
}
Скриншоты работы приложения
Заключение
В ходе выполнения работы закреплены навыки работы с двумерными массивами, функциями пользователя. Создано приложение для работы с матрицами. Тестирование показало работоспособность созданной программы
Список использованной литературы
1. Шилдт, Герберт С# 4.0 Полное руководство. : Пер. с английского. М. – ООО «И. Д. Вильямс», 2011 – 1056 с. : ил.
2. Уотсон, К. Visual С# 2010: полный курс.: Пер. с англ. — М.: ООО "И. Д. Вильяме", 2011. — 960 с. : ил.
3. Троелсен, Эндрю. Язык программирования С# 2010 и платформа. NET 4.0, 5-е изд. : Пер. с англ. — М. : ООО "И. Д. Вильяме", 2011. — 1392 с. : ил.