МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
Кафедра БІТ
З В І Т
до лабораторної роботи №3
з курсу: «Технології програмування»
на тему: «Масиви. Робота з масивами»
Варіант № 6
Мета роботи – вивчити синтаксис опису і використання у програмах змінних типу масивів та властивостей. Навчитися складати та відлагоджувати програми з використанням індексаторів при роботі з масивами.
Завдання
1. Вивчити синтаксис опису і використання у програмах змінних типу масивів та властивостей, а також індексаторів мови С#.
2. Скласти блок-схеми алгоритмів та програму мовою С# для роботи з одномірним масивом цілих чисел (вектором). Забезпечити наступні можливості: задання довільних цілих границь індексів при створенні об'єкта; звертання до окремого елемента масиву з контролем виходу за межі масиву; розрахунок за алгоритмом, згідно з завданням: в одномірному масиві, що складається з n дійсних елементів, обчислити: мінімальний елемент масиву; суму елементів масиву, розташованих між першим й останнім позитивними елементами. Перетворити масив таким чином, щоб спочатку розташовувалися всі елементи рівні нулю, а потім - всі інші; вивід на екран елемента масиву по заданому індексі й усього масиву. Програма повинна демонструвати всі розроблені елементи класу.
Блок-схема алгоритму програми
Метод «Main ()»
/
Метод «ReadBound»/
Метод «ReadArray()»
/
Метод «Vyv ()»
/
Метод «Readk ()»
/
Метод доступу «Get()»
/
Метод доступу «Set()»
/
Метод zvenIn()
/
Min()
/
Метод «Sort()»
/
Summa()
/
Список ідентифікаторів констант, змінних, процедур і функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення.
start, finish, size – змінні цілого типу, які є довільними індексами масиву і розміром масиву;
[] w – масив з елементів дійсного типу;
i – змінна цілого типу, яка є індексом масиву;
Errr – змінна логічного типу, що визначає чи відбувся вихід за межі масиву;
index – змінна цілого типу, що є формальним індексом;
S – змінна дійсного типу, якій надається значення результату обчислення виразу;
k – змінна цілого типу, яка є індекс масиву;
x – змінна дійсного типу, яка є елементом масиву;
minel – змінна дійсного типу, яка є мінімальним елементом масиву;
Sum – змінна дійсного типу, яка є сумою елементів масиву;
InFirst/InLast – змінна цілого типу, що є першим/останнім додатковим елементом масиву;
y – змінна цілого типу, яка приймає значення індексу масиву;
q – змінна цілого типу, яка приймає значення індексу масиву;
Main( ) – головний метод;
Console.ReadLine() – метод, що затримує вікно консолю;
public – рівень доступу, у якому члени доступні з будь-якого місця програми;
double – тип, з плаваючою точкою подвійної точності;
int – цілий знаковий тип;
get/set – метод, що отримує/встановлює властивість;
foreach() – оператор, що перебирає елементи;
Console.Write – метод, що виводить текст на екран;
double.Parse – метод, що переводить дані типу string в double;
Int32.Parse – метод, що переводить дані типу string в int;
Console.ReadLine() – метод, що зчитує дані з консолю;
ReadBound() – метод, що відповідає за вивід допоміжного тексту на екран і зчитування з екрану значення довільних індексів масиву;
ReadArray() – метод, що відповідає за вивід допоміжного тексту на екран і зчитування з екрану значення елементів масиву;
Readk() – метод, що відповідає за вивід допоміжного тексту на екран і зчитування з екрану значення k;
zvenIn() – метод, що визначає чи відбувся вихід за масив і виводить відповідне значення чи повідомлення в кожному випадку;
Min() – метод, що відповідає за обрахування мінімального елемента;
Summa() – метод, що відповідає за обрахування суми елементів масиву;
Length – метод, що визначає розмір елемента;
for (…) – цикл з передумовою;
Vyv() – метод, що відповідає за виведення елементів масиву на екран.
Остаточна версія програми
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
Obrah z = new Obrah();
z.ReadBound();
z.ReadArray();
z.Readk();
z.zvenIn();
z.Min();
z.Summa();
z.Vyv();
z.Sort();
Console.ReadLine();
}
}
class Read1
{
protected int start, finish, size;
public void ReadBound()
{
Console.Write("Enter the initial bound \n start=");
start = Int32.Parse(Console.ReadLine());
Console.Write("Enter the ultimate bound \n finish=");
finish = Int32.Parse(Console.ReadLine());
size = finish - start+1;
}
public double[] w;
protected int i;
public void ReadArray()
{
Console.WriteLine("Enter the array");
w = new double[size];
for ( i= 0; i < w.Length; i++)
{
Console.Write("w[{0}] = ", i+start);
w[i] = double.Parse(Console.ReadLine());
}
}
public void Vyv()
{
foreach (double y in w)
Console.Write("\t" + y);
}
}
class Opr : Read1
{
public int k;
public void Readk()
{
Console.Write("Enter the value index \n k=");
k = Int32.Parse(Console.ReadLine());
}
private bool Errr;
private double this[int index]
{
get
{
if ((index >= start) && (index <= finish))
{
return w[index - start];
Errr = false;
}
else
{
Errr = true;
return 0;
}
}
set
{
if ((index >= start) && (index <= finish))
{
w[index] = value;
Errr = false;
}
else
Errr = true;
}
}
public void zvenIn()
{
double x;
x = this[k];
if (this.Errr)
{
Console.WriteLine("\n Going beyond the array!");
}
else
{
Console.WriteLine(" \n w[{0}]={1}", k, x);
}
}
}
class Obrah : Opr
{
private double minel;
public void Min()
{
minel=w[0];
for (i = 0; i < w.Length; i++)
{
if (w[i] <= minel)
{
minel = w[i];
}
}
Console.WriteLine("Min element = {0}", minel);
}
private double Sum;
private int InFirst, InLast;
public void Summa()
{
Sum = 0;
for (i = 0; i < w.Length; ++i)
{
if (w[i] > 0)
{
InFirst = i;
break;
}
}
for (i=w.Length-1;i>=0; --i)
{
if (w[i] > 0)
{
InLast = i;
break;
}
}
for(i=InFirst+1;i<InLast;i++)
{
Sum += w[i];
}
Console.WriteLine("Summa = {0}", Sum);
}
private int y, q;
private double x;
public void Sort()
{
for (i = 0; i < w.Length; i++)
{
y = i;
x = w[i];
for (q = i + 1; q < w.Length; q++)
{
if (w[q] == 0)
{
y = q;
x = w[y];
w[q] = w[i];
w[i] = x;
}
}
}
Console.WriteLine("\n Sorted array");
Vyv();
}
}
}
Результати роботи програми
/