Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
З В І Т
до лабораторної роботи №7
з курсу: «Технології програмування»
на тему: «Програми з використанням масивів та індексаторів»
Варіант № 8
Львів – 2013
Мета роботи – вивчити синтаксис опису і використання у програмах змінних типу масивів та властивостей. Навчитися складати та відлагоджувати програми з використанням індексаторів при роботі з масивами.
1. Завдання
Скласти блок-схеми алгоритмів та програму мовою С# для роботи з одномірним масивом цілих чисел (вектором). Забезпечити наступні можливості: задання довільних цілих границь індексів при створенні об'єкта; звертання до окремого елемента масиву з контролем виходу за межі масиву; розрахунок за алгоритмом, згідно з завданням, отриманим від викладача за табл. 1; вивід на екран елемента масиву по заданому індексі й усього масиву. Програма повинна демонструвати всі розроблені елементи класу.
Табл. 1
Завдання
В одномірному масиві, що складається з п дійсних елементів, обчислити: суму елементів масиву з непарними номерами; суму елементів масиву, розташованих між першим й останнім від’ємними елементами.
Стиснути масив, видаливши з нього всі елементи, модуль яких не перевищує одиницю. Елементи, що звільнилися в кінці масиву, заповнити нулями.
2. Блок-схема алгоритму програми
Field()
ScanArray()
ok(int index)
ArrayNumber()
ArrayTransformation()
ElementOutput()
Main(string[] args)
SummVidemni()
3. Список ідентифікаторів констант, змінних, функцій,
використаних у блок-схемі алгоритму і програмі,
та їх пояснення
Console.ReadLine() – зчитування стрічки з консолі;
Convert.ToDouble() –конвертування текстової змінної в число типу Double;
Console.WriteLine()– метод виведення на екран;
class Program – клас, в якому оголошена головна функція static void Main(string[] args);
class Size – клас, в якому оголошений метод Field();
public void Field() – метод, в якому знаходять межі масиву та довжина;
size1, size2 – межі масиву;
Length – довжина масиву;
b – масив з даними дійсного типу;
private bool ok(int index) – метод для перевірки індексу масиву;
public void ScanIndex() – метод для зчитування індексу для виведення;
public void ElementOutput() – метод, який виводить елемент масиву;
public void LargeArrayNumber() – метод, в якому обчислюють кількість елементів та виводять її;
public void MaximumProduct() – метод, в якому обчислюють добуток елементів та виводять його;
public void ArrayTransformation() – метод, в якому здійснюється перетворення масиву;
4. Текст програми
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ArrayWork
{
class Array
{
int Length;
int size1;
int size2;
double[] a;
bool ErrFlag;
int aIndex;
double[] b;
double bSum = 0;
double bSumm = 0.0;
int cIndex1;
int cIndex2;
public void Field()
{
Console.WriteLine("Введiть межi масиву: ");
Console.Write("Перша межа:");
size1 = Convert.ToInt32(Console.ReadLine());
Console.Write("Друга межа:");
size2 = Convert.ToInt32(Console.ReadLine());
Length = size2 - size1 + 1;
}
public void ScanArray()
{
a = new double[Length];
int x = size1;
Console.WriteLine("Введiть массив: ");
for (int i = 0; i < Length; i++)
{
Console.Write("a[" + x + "]=");
a[i] = Convert.ToDouble(Console.ReadLine());
x++;
}
foreach (double z in a)
Console.Write("\t" + z);
Console.Write("\n");
}
double this[int index]
{
get
{
if (ok(index))
{
ErrFlag = false;
return a[index - size1];
}
else
{
ErrFlag = true;
return 0;
}
}
set
{
if (ok(index))
{
a[index] = value;
ErrFlag = false;
}
else ErrFlag = true;
}
}
private bool ok(int index)
{
if (index >= size1 & index <= size2) return true;
else
return false;
}
public void ArrayNumber()
{
for (int i = 0; i < Length; i++)
{
if ((i - size1) % 2 != 0)
bSum += a[i];
}
Console.WriteLine("Сума елементiв з непарними номерами: " + bSum);
}
public void SummVidemni()
{
int z = 0;
for (int i = 0; i < Length; i++)
{
if (a[i] < 0.0 && z == 0)
{
cIndex1 = i;
z++;
}
else
if (a[i] < 0.0)
cIndex2 = i;
}
for (int i = cIndex1 + 1; i < cIndex2; i++)
bSumm += a[i];
Console.WriteLine("Cума елементiв мiж першим та останнiм вд'ємним елементом: " + bSumm);
}
public void ArrayTransformation()
{
b = new double[Length];
for (int i = 0; i < Length; i++)
b[i] = a[i];
for (int i = 0; i < Length; i++)
if (Math.Abs(b[i]) < 1.0)
{
for (int j = i; j < Length - 1; j++)
{
b[j] = b[j + 1];
}
b[Length - 1] = 0.0;
}
foreach (double z in b)
Console.Write("\t" + z);
Console.Write("\n");
}
public void ElementOutput()
{
double x;
Console.Write("Введiть номер елемента для виведення: ");
aIndex = Convert.ToInt32(Console.ReadLine());
x = this[aIndex];
if (this.ErrFlag)
Console.WriteLine("Ви вказали не правильний номер елемента");
else
Console.WriteLine("a[" + aIndex + "]=" + x);
}
}
class Program
{
static void Main(string[] args)
{
Array a = new Array();
a.Field();
a.ScanArray();
a.ArrayNumber();
a.SummVidemni();
a.ArrayTransformation();
a.ElementOutput();
Console.ReadLine();
}
}
}
5. Результати роботи програми
6. Висновки
На даній лабораторній роботі я вивчив синтаксис опису і використання у програмах змінних типу масивів та властивостей. Навчитися складати, використовувати та відлагоджувати програми з використанням індексаторів при роботі з масивами. Ознайомився з основними командами для роботи з масивом даних. Також навчився складати алгоритми для розв’язування заданих завдань і алгоритми для роботи з масивами.