МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
З В І Т
до лабораторної роботи №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