МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА
Кафедра захисту інформації
З В І Т
До лабораторної роботи №8
з курсу:
„Алгоритмічні мови та програмування”
на тему:
„Робота з масивами. Використання функцій”
Варіант 17
Мета:
Вивчити синтаксис опису і використання у програмах змінних типу масивів, навчитися використовувати масиви для оброблення матриць, вивчити основні алгоритми сортування масивів, навчитися описувати та застосувати у програмах функції для виконання логічно закінчених алгоритмів.
Завдання:
Скласти блок-схему алгоритму та програму мовою С# згідно з завданням. Задано прямокутну матрицю A={aij} відсортувати за вказаним алгоритмом; для відсортованої матриці знайти значення функції F(fi(aij)); алгоритм сортування і обчислення fi(aij) оформити у вигляді функцій; елементи матриці вводити з клавіатури програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)).
Алгоритм впорядкування матриці
Алгоритм для розрахунку fi(aij) та F(fi(aij));
Матриця
Впорядкувати елементи стовпців матриці за зростанням їх значень методом обміну
fi(aij)-середнє арифметичне значення елементів у кожному рядку матриці; F(fi(aij)) – сума fi(aij)
66
21
-3
-1
90
1
74
-2
80
-1
10
30
20
-50
91
2
4
5
81
0
33
69
-5
51
24
Забезпечити ввід аргументів з клавіатури та вивід результату на дисплей.
Список індентифікаторів, змінних, функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення
i,j, - змінні цілого типу, які є аргументами виразу;
Int 32 - 32-бітове ціле число з знаком;
Byte – 8-бітове число без знаку;
Double – тип з плаваючою крапкою подвійної точності;
public – модифікатор доступу, члени якого доступні з будь-якого місця програми;
Main() – головна функція;
\n – перехід на новий рядок;
static – ключове слово, яке використовується для оголошення методів(змінних); if- умовний оператор;
for-оператор покрокового циклу;
Блок-схема алгоритму:
Блок-схема підпрограми для зчитування масиву nxn:
Блок-схема підпрограми для виведення масиву nxn на екран:
Блок-схема підпрограми для сортування масиву:
Текст програми:
using System;
namespace WorkFour
{
class Program
{
static public Int32 n = 5;
static void Main(string[] args)
{
Int32[,] labArray = new Int32[n, n];
setOutputArray sOA = new setOutputArray();
operationWithArray oWA = new operationWithArray();
sOA.setArray(ref labArray);
Console.WriteLine("\nДаний масив");
sOA.output(labArray);
oWA.sortColumnDownToUp(ref labArray);
Console.WriteLine("\nНовий масив");
sOA.output(labArray);
Console.WriteLine("");
oWA.middleArithOfLine(labArray);
Console.ReadLine();
}
}
class setOutputArray
{
Byte i, j;
String line;
public void setArray(ref Int32[,] tempAr)
{
for (i = 0; i < Program.n; i++)
{
for (j = 0; j < Program.n; j++)
{
Console.Write("Елемент: Ряд [{0}], Стовпець [{1}]: ", i + 1, j + 1);
line = Console.ReadLine();
tempAr[i, j] = Convert.ToInt32(line);
}
Console.WriteLine("");
}
}
public void output(Int32[,] tempAr)
{
for (i = 0; i < Program.n; i++)
{
for (j = 0; j < Program.n; j++)
Console.Write("{0,5} ", tempAr[i, j]);
Console.WriteLine("");
}
}
}
class operationWithArray
{
Byte i, j;
Double sum, product = 0;
public void sortColumnDownToUp(ref Int32[,] tempAr)
{
int c, i, j, k;
for (j = 0; j < Program.n; j++)
{
for (k = Program.n - 1; k > 0; k--)
{
for (i = 0; i < k; i++)
{
if (tempAr[i, j] > tempAr[i + 1, j])
{
c = tempAr[i, j];
tempAr[i, j] = tempAr[i + 1, j];
tempAr[i + 1, j] = c;
}
}
}
}
}
public void middleArithOfLine(Int32[,] tempAr)
{
for (i = 0; i < Program.n; i++)
{
sum = 0;
for (j = 0; j < Program.n; j++)
sum += tempAr[i, j];
Console.WriteLine("Ряд [{0}], середнє значення ряду = {1}", i + 1, sum / (j));
product += sum / (j);
}
Console.WriteLine("\nСума рядів = {0}", product);
}
}
}
Результат виконання програми:
Висновок:
На цій лабораторній роботі я вивчив синтаксис опису і використання у програмах змінних типу масивів, навчився використовувати масиви для оброблення матриць, вивчив основні алгоритми сортування масивів, навчився описувати та застосувати у програмах функції для виконання логічно закінчених алгоритмів.