МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
З В І Т
до лабораторної роботи №3
з курсу: «Алгоритмічні мови та програмування»
на тему: «ПРОГРАМИ З ВИКОРИСТАННЯМ МАСИВІВ ТА ІНДЕКСАТОРІВ»
Варіант № 6
Львів-2011
Мета роботи – вивчити синтаксис опису і використання у програмах змінних типу масивів та властивостей. Навчитися складати та відлагоджувати програми з використанням індексаторів при роботі з масивами.
ЗАВДАННЯ
Вивчити синтаксис опису і використання у програмах змінних типу масивів та властивостей, а також індексаторів мови С#.
Скласти блок-схеми алгоритмів та програму мовою С# для роботи з одномірним масивом цілих чисел (вектором). Забезпечити наступні можливості: задання довільних цілих границь індексів при створенні об'єкта; звертання до окремого елемента масиву з контролем виходу за межі масиву; розрахунок за алгоритмом, згідно з завданням, отриманим від викладача за табл. 2; вивід на екран елемента масиву по заданому індексі й усього масиву. Програма повинна демонструвати всі розроблені елементи класу.
6
В одномірному масиві, що складається з п дійсних елементів, обчислити: мінімальний елемент масиву; суму елементів масиву, розташованих між першим й останнім позитивними елементами.
Перетворити масив таким чином, щоб спочатку розташовувалися всі елементи рівні нулю, а потім - всі інші.
БЛОК-СХЕМИ
Клас Array
Метод Field
Метод ScanArray
Метод min
Так Ні
Метод Suma
так ні
так
Метод ArrayTransformation
\
Метод ElementOutput
Так Ні
class Program
Метод Main
СПИСОК ІДЕНТИФІКАТОРІВ КОНСТАНТ, ЗМІННИХ, ФУНКЦІЙ, ВИКОРИСТАНИХ У БЛОК-СХЕМІ АЛГОРИТМУ І ПРОГРАМІ, ТА ЇХ ПОЯСНЕННЯ
a,b,h – змінні дійсного типу, які є аргументами виразу;
x,y – змінна дійсного типу, якій надається значення результату обчислення виразу;
static void Main(string[]args) – головна функція;
Console.ReadLine() - зчитування стрічки з консоля;
Convert.Parse() - конвертування текстової змінної в число типу Double;
Console.WriteLine() – метод виведення на екран;
ТЕКСТПРОГРАМИ
using System;
using System.Collections.Generic;
using System.Text;
namespace ArrayWork
{
class Array
{
int Length;
int size1;
int size2;
double[] a;
bool ErrFlag;
int aIndex;
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");
}
public 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 MinElemet()
{
double min = a[0];
for (int i = 0; i < Length; i++)
{
if (min >= a[i])
{
min = a[i];
}
}
Console.WriteLine("Мiнiмальний елемент масиву:" + min);
}
public void Summ()
{
int cIndex1 = 0;
int cIndex2 = 0;
double bSumm = 0;
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в:" + bSumm);
}
public void ArrayTransformation()
{
double[] b = new double[Length];
int aIndex = 0;
for (int i = 0; i < Length; i++)
if (a[i] == 0.0)
{
b[aIndex] = a[i];
aIndex++;
}
for (int i = 0; i < Length; i++)
if (a[i] != 0.0)
{
b[aIndex] = a[i];
aIndex++;
}
foreach (double x in b)
Console.Write("\t" + x);
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.MinElemet();
a.Summ();
a.ArrayTransformation();
a.ElementOutput();
Console.ReadLine();
}
}
}
РЕЗУЛЬТАТ РОБОТИ ПРОГРАМИ
Введiть межi масиву:
Перша межа:-5
Друга межа:5
Введiть массив:
a[-5]=-4,9
a[-4]=-3,6
a[-3]=-2,4
a[-2]=-1,5
a[-1]=0
a[0]=1,5
a[1]=2,6
a[2]=3,7
a[3]=4,5
a[4]=4,7
a[5]=4,9
-4,9 -3,6 -2,4 -1,5 0 1,5 2,6 3,7 4,5
4,7 4,9
Мiнiмальний елемент масиву:-4,9
Cума елементiв:15,5
0 -4,9 -3,6 -2,4 -1,5 1,5 2,6 3,7 4,5
4,7 4,9
Введiть номер елемента для виведення: 5
a[5]=4,9