Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
З В І Т
до лабораторної роботи №3
з курсу: «Алгоритмічні мови та програмування, ч. 2»
на тему: «Масиви. Робота з масивами»
Варіант № 21
Мета роботи – вивчити синтаксис опису і використання у програмах змінних типу масивів та властивостей. Навчитися складати та відлагоджувати програми з використанням індексаторів при роботі з масивами.
1.Завдання
Скласти блок-схеми алгоритмів та програму мовою С# для роботи з одномірним масивом цілих чисел (вектором). Забезпечити наступні можливості: задання довільних цілих границь індексів при створенні об'єкта; звертання до окремого елемента масиву з контролем виходу за межі масиву; розрахунок за алгоритмом, згідно з завданням, отриманим від викладача за табл. 2; вивід на екран елемента масиву по заданому індексі й усього масиву. Програма повинна демонструвати всі розроблені елементи класу.
2.Блок-схеми алгоритму програми
Метод «GetMaxlndex ()»
/
Метод « Mult ()»
/
Метод «Change ()»/
3.Список ідентифікаторів констант, змінних, процедур і функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення.
int startIndex - стартовий iндекс;
int endIndex - кiнцевий індекс;
class Array – клас надає методи для створення, зміни, пошуку і сортування масивів, тобто виступає в ролі базового класу для всіх масивів в середовищі CLR;
Console.WriteLine – метод, що записує поточну ознаку кінця рядка в стандартний вихідний потік;
Console.Write – метод, що записує текстове представлення заданого значення або значень в стандартний вихідний потік;
for (…) – цикл з передумовою;
get - ключове слово get визначає метод доступу в властивості або індексатора, який витягує значення властивості або елемент індексатора;
set - Ключове слово set визначає метод доступу в властивості або індексатора, який призначає значення властивості елемента індексатора;
return - перериває виконання методу, в якому воно присутнє і повертає управління викликає методу;
start1 - стартовий iндекс для чисел з непарним iндексом;
start2 - стартовий iндекс для чисел з парним індексом;
while - оператор виконує оператор або блок операторів, поки певний вираз не прийме значення false;
Convert.ToInt32 - метод перетворює задане значення в 32-бітове ціле число зі знаком;
Console.ReadKey() - метод, що затримує вікно консолю;
if-else – інструкція, що визначає яка інструкція буде виконана.
4.Текст програми
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace lab_3
{
class Array
{
int length;
int startIndex; // стартовий iндекс
int endIndex; // кiнцевий iндекс
int[] a;
// створення масиву, за заданими межами iндексiв..наприклад 2..8
public void Create(int _startIndex, int _endIndex)
{
startIndex = _startIndex;
endIndex = _endIndex;
length = endIndex - startIndex + 1;
a = new int[length];
Console.WriteLine("Введiть масив: ");
for (int i = 0; i < length; i++)
{
Console.Write("a[" + (i + startIndex) + "] = ");
a[i] = Convert.ToInt32(Console.ReadLine());
}
}
// для iндексацiї масиву
public int this[int i]
{
get
{
if (CorrectIndex(i))
return a[i - startIndex];
else
return -9999;
}
set
{
if (CorrectIndex(i))
a[i] = value;
}
}
// перевiрка чи коректний iндекс
private bool CorrectIndex(int index)
{
if (index >= startIndex && index <= endIndex)
return true;
else
return false;
}
// вивiд по заданому iндексi
public void PrintByIndex(int index)
{
if (CorrectIndex(index))
Console.WriteLine("[" + index + "] element: " + a[index - startIndex]);
else
Console.WriteLine("Некоректний iндекс");
}
// вивiд всього масиву
public void Print()
{
Console.WriteLine("Array is: ");
for (int i = 0; i < length; i++)
Console.Write(a[i] + " ");
}
static void Main(string[] args)
{
Array a = new Array();
Console.WriteLine("Введiть межi масиву: ");
Console.Write("Перша межа:");
int start = Convert.ToInt32(Console.ReadLine());
Console.Write("Друга межа:");
int end = Convert.ToInt32(Console.ReadLine());
double sum = summ(a);
Console.WriteLine("\nСума відємних - " + sum);
int minInd = minIndex(a);
int maxInd = maxIndex(a);
Console.Write("Min - " + a[minInd] + " index = " + minInd);
Console.Write("\nMax - " + a[maxInd] + " index = " + maxInd);
double multiSum = 1;
if (maxInd < minInd)
{
int tmp = minInd;
minInd = maxInd;
maxInd = tmp;
}
for (int i = minInd; i <= maxInd; i++)// 1 3 5
{
multiSum *= a[i];
}
Console.WriteLine("\nДобуток між макс і мін - " + multiSum);
for (int i = 0; i < a.Length - 1; i++)
for (int j = i + 1; j < a.Length; j++)
{
if (a[i] < a[j])
{
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
for (int i = 0; i < a.Length; i++)
Console.WriteLine(a[i].ToString() + ' ');
Console.ReadKey();
}
public static void sort(int[] ar)// 8 1 -3 9 -5
{
}
public static double summ(int[] a)
{
double summ = 0;
for (int i = 0; i < a.Length; i++)
if (a[i] < 0) summ += a[i];
return summ;
}
public static int maxIndex(int[] a)
{
int max = a[0];
int indexMax = 0;
for (int i = 1; i < a.Length; i++) if (Math.Abs(a[i]) > Math.Abs(max)) { max = a[i]; indexMax = i; }
return indexMax;
}
public static int minIndex(int[] a)
{
int min = a[0];
int indexMin = 0;
for (int i = 1; i < a.Length; i++) if (Math.Abs(a[i]) < Math.Abs(min)) { min = a[i]; indexMin = i; }
return indexMin;
}
a.Create(start, end);
a.Print();
Console.Write("\nВведiть номер елемента для виведення: ");
int index = Convert.ToInt32(Console.ReadLine());
a.PrintByIndex(index);
a.Print();
Console.ReadKey();
}
}
}
5.Результати роботи програми
6.Висновок
Виконуючи цю лабораторну роботу я вчила синтаксис опису і використання у програмах змінних типу масивів та властивостей. Вчилася складати та відлагоджувати програми з використанням індексаторів при роботі з масивами.