ІКТА / КБ-12 / Технології Програмування частина №2 (ТП ч.2) / Лаби (готові) / Варіант №5 / Лабараторна робота №7 ТП Ч.2
.docxМІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
ЗВІТ
до лабораторної роботи №7
з курсу: «Технології програмування »
на тему: «МАСИВИ. РОБОТА З МАСИВАМИ»
Варіант № 5
Виконав: ст. гр. КБ-12
Войтович О.О.
Прийняв: Партика А.І.
Львів - 2018
Мета роботи – вивчити синтаксис опису і використання у програмах змінних типу масивів та властивостей. Навчитися складати та відлагоджувати програми з використанням індексаторів при роботі з масивами.
-
Завдання
В одномірному масиві, що складається з п дійсних елементів, обчислити: максимальний елемент масиву; суму елементів масиву, розташованих до останнього додатного елементу. Стиснути масив, видаливши з нього всі елементи, модуль яких перебуває в інтервалі [а, b]. Елементи, що звільнилися в кінці масиву, заповнити нулями.
Забезпечити наступні можливості: задання довільних цілих границь індексів при створенні об'єкта; звертання до окремого елемента масиву з контролем виходу за межі масиву; розрахунок за алгоритмом, згідно з завданням, отриманим від викладача за табл. 2; вивід на екран елемента масиву по заданому індексі й усього масиву. Програма повинна демонструвати всі розроблені елементи класу.
|
|
Перехід
на новий рядок
3. Cписок ідентифікаторів констант, змінних, функцій, використаних у блок-схемі алгоритму і програмі,
та їх пояснення
_mas[i]– елементи масиву;
for - цикл з передумовою;
if – умовний оператор;
fill() – функція зчитування матриці;
writeln() – функція виведення матриці;
maximal() – пошук максимального елементу;
dotsum() – пошук останнього додатного елементу, виклик startsum(i) і writeln();
startsum(i) – сумування елементів;
tenderloin() – пошук елементів діапазону, виклик correction(i);
correction(i) – підсовування елементів;
4. Текст програми
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _3._2
{
unsafe class Program : arrey
{ static void Main()
{
Program a = new Program();
long begin;
string log;
Double[] _array = new Double[a.create(&begin)]; ;
a.fill(begin, ref _array);
Console.WriteLine("enter help if needed");
while (true)
{
log = Console.ReadLine();
switch (log)
{
case "help":
{
Console.WriteLine("- fill");
Console.WriteLine("- illumination");
Console.WriteLine("- adjustment");
Console.WriteLine("- writeln");
Console.WriteLine("- maximal");
Console.WriteLine("- dotsum");
Console.WriteLine("- tenderloin");
Console.WriteLine("- exit");
break;
}
case "fill":
{
a.fill(begin, ref _array);
break;
}
case "illumination":
{
a.illumination(begin, ref _array);
break;
}
case "adjustment":
{
a.adjustment(begin, ref _array);
break;
}
case "writeln":
{
a.writeln(ref _array, begin);
break;
}
case "maximal":
{
a.maximal(ref _array);
break;
}
case "dotsum":
{
a.dotsum(ref _array);
break;
}
case "tenderloin":
{
a.tenderloin(ref _array);
break;
}
case "exit":
{
return;
break;
}
default :
{
Console.WriteLine("Error! Command does not exist !");
break;
}
}
}
}
}
unsafe class arrey : Functional
{
protected void fill (long begin,ref double[] _array)
{
Console.WriteLine("Execute fill in");
for (long i = 0; i < _array.Length; i++)
{
Console.Write("Element #" + (i + begin) + " = ");
_array[i] = Convert.ToDouble(Console.ReadLine());
}
}
protected long create(long* array)
{
Int64 begin, end, roz;
Console.Write("Begin array = ");
begin = Convert.ToInt64(Console.ReadLine());
Console.Write("End array = ");
end = Convert.ToInt64(Console.ReadLine());
roz = end - begin + 1;
(*array) = begin;
return roz;
}
protected long call(Int64 begin,ref Double[] _array)
{ Int64 _Namber = -1;
do
{
Console.Write("Element #");
_Namber = Convert.ToInt64(Console.ReadLine());
if ((_Namber < begin && _Namber > (begin + _array.Length)))
Console.WriteLine("Error! Element number does not exist !");
}
while (_Namber<begin && _Namber>(begin+_array.Length)) ;
return _Namber;
}
protected void illumination(Int64 begin,ref Double[] _array)
{
long _Namber = call(begin,ref _array);
Console.WriteLine("Element #" + _Namber + " = " + _array[_Namber-begin]);
}
protected void adjustment(Int64 begin,ref Double[] _array)
{
long _Namber = call(begin,ref _array);
Console.Write("Element #" + _Namber + " = ");
_array[_Namber-begin] = Convert.ToInt64(Console.ReadLine());
}
}
unsafe class Functional
{
protected void writeln(ref double[] _array, long begin)
{
for (int i = 0; i < _array.Length; i++)
{
Console.Write("#"+(i+begin)+" = "+_array[i] + " ");
}
Console.WriteLine();
}
protected void maximal(ref double[] _array)
{
double max = _array[0];
for (Int64 i = 1; i < _array.Length; i++)
{
if (max < _array[i]) max = _array[i];
}
Console.WriteLine("Maximum item = " + max);
}
protected void dotsum(ref double[] _array)
{
for (Int64 i = _array.Length - 1; i >= 0; --i)
{
if (_array[i] < 0) continue;
else { Console.WriteLine("The amount of items until the last positive = " + startsum(i, ref _array)); break; }
}
}
private double startsum(Int64 i, ref double[] _array)
{
double sum = 0;
for (Int64 j = 0; j <= i; ++j)
sum += _array[j];
return sum;
}
protected void tenderloin(ref double[] _array)
{
Console.Write("Left border = ");
double a = Double.Parse(Console.ReadLine());
Console.Write("Right border = ");
double b = Double.Parse(Console.ReadLine());
for (int x = 0; x < _array.Length; x++)
{
if (_array[x] > a && _array[x] < b)
{
correction(x, ref _array);
x--;
}
}
}
private void correction(int i, ref double[] _array)
{
for (int j = i; j < _array.Length - 1; ++j)
{
_array[j] = _array[j + 1];
}
_array[_array.Length - 1] = 0f;
}
}
}
5. Результати роботи програми