Добавил:
Допоможу чим зможу) Відсигнальте якщо знайшли шось корисне) Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
128
Добавлен:
20.05.2018
Размер:
132.78 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»

ІКТА

кафедра ЗІ

ЗВІТ

до лабораторної роботи №7

з курсу: «Технології програмування »

на тему: «МАСИВИ. РОБОТА З МАСИВАМИ»

Варіант № 5

Виконав: ст. гр. КБ-12

Войтович О.О.

Прийняв: Партика А.І.

Львів - 2018

Мета роботи – вивчити синтаксис опису і використання у програмах змінних типу масивів та властивостей. Навчитися складати та відлагоджувати програми з використанням індексаторів при роботі з масивами.

  1. Завдання

В одномірному масиві, що складається з п дійсних елементів, обчислити: максимальний елемент масиву; суму елементів масиву, розташованих до останнього додатного елементу.

Стиснути масив, видаливши з нього всі елементи, модуль яких перебуває в інтервалі [а, b]. Елементи, що звільнилися в кінці масиву, заповнити нулями.

Забезпечити наступні можливості: задання довільних цілих границь індексів при створенні об'єкта; звертання до окремого елемента масиву з контролем виходу за межі масиву; розрахунок за алгоритмом, згідно з завданням, отриманим від викладача за табл. 2; вивід на екран елемента масиву по заданому індексі й усього масиву. Програма повинна демонструвати всі розроблені елементи класу.

Перехід на новий рядок

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. Результати роботи програми