У вас вопросы?
У нас ответы:) SamZan.net

Контрольная работа ’ 1 по дисциплине Программирование на С-С Выполнил- студент 3 курса ФВЗО гр.html

Работа добавлена на сайт samzan.net: 2016-01-17

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 7.3.2025

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

Воронежский государственный технический университет

Кафедра автоматизированных и вычислительных систем

Контрольная работа № 1 по дисциплине
«Программирование на С/С++»

Выполнил: студент 3 курса ФВЗО гр. ВМ 101

Гулевский А.В.

 

Проверил:      Е.А. Ганцева

Воронеж 2012

Вариант 12

Контрольная работа 1

 Задание 1

Изучить теоретический материал, ответить на контрольные вопросы. Самостоятельно создать новое консольное приложение.

В функции Main() объявить 2 переменные типа string, 1 – типа int, 1 - типа double.

Ввести их значения с клавиатуры и рассчитать сумму и произведение арифметических переменных, сумму строк.

Решение 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

           // это предыдущее задание, я его закомментировал но на всякий случай оставил

           //double myDouble;

           // string myString;

           // myDouble = Convert.ToDouble(Console.ReadLine());

           // myString = "\" myDouble \"is";

           //  Console.WriteLine("{0} {1}", myString, myDouble);

          

           string aaa;

           string bbb;

           int ccc;

           double ddd;

           int x;

           int z;

           Console.WriteLine("Задание: объявить 2 переменные типа string, 1 – типа int, 1 - типа double. Ввести их значения с клавиатуры и рассчитать сумму и произведение арифметических переменных, сумму строк.");

           Console.WriteLine("Введите строку");

           aaa = Console.ReadLine();

           Console.WriteLine("Введите еще одну строку");

           bbb = Console.ReadLine();

           Console.WriteLine("Введите число");

           ccc = Convert.ToInt32(Console.ReadLine());

           Console.WriteLine("Введите еще одно число");

           ddd = Convert.ToDouble(Console.ReadLine());

           x = ccc + Convert.ToInt32(ddd);

           z = ccc * Convert.ToInt32(ddd);

           Console.WriteLine("сумма арифметических переменных = "+x);

           Console.WriteLine("произведение арифметических переменных = " + z);

           Console.WriteLine("сумма строковых переменных = " + aaa+bbb);

          

       }

   }

}

Результат работы программы

Контрольная работа 2

Задание 1

1. Ввести с клавиатуры границы диапазона n и N натуральных чисел (n<N). Из чисел, входящих в этот диапазон, необходимо напечатать только те, цифры которых являются соседними в натуральном ряду. Подсчитать количество этих чисел и определить, сколько среди них четных и нечетных.

Решение

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

           int x1, x2, a, b, s, w, v, z, x, size, step, count, count2, count3;

           Console.WriteLine("Введите границу начала ряда");

           x1 = Convert.ToInt32(Console.ReadLine());

           Console.WriteLine("Введите границу конца ряда");

           x2 = Convert.ToInt32(Console.ReadLine());

           count = 0;

           count2 = 0;

           int i = x1;

           

           for ( ; i < x2 + 1; i++)

           {

           

           ewq:

           

               // определяем разрядность числа size

               size = 0;

               w = i;

               for (; w > 0; size++)

               {

                   w = w / 10;

               }

               // оределяем степернь делителя

               v = size;

               step = 10;

               while (v > 2)

               {

                   v = v - 1;

                   step = step * 10;

               }

               // объявляем массив размером size

               int y = 0;

               int[] A1 = new int[size];

               // раскладываем число на фиры в массив

               for (int j = 0; j < size - 1; j++)

               {

                   s = i;

               qwe:

                   a = s / step;

                   A1[j + y] = a;

                   b = s % step;

                   if (b < 1)

                   {

                        i = i + (step/10);

                       goto ewq;

                   }

                   if (b < 10)

                   {

                       y++;

                       A1[j + y] = b;

                   }

                   else

                   {

                       j++;

                       s = b;

                       step = step / 10;

                       goto qwe;

                   }

               }

               // проверяем отвечает ли массив заявленным требованиям

               z = 0;

               x = 0;

               for (int d = 0; d < size; d++)

               {

               

                   v = 1;

                   if (d == size-1)

                   {

                       v = 0;

                   }

                

                   if ((A1[d] + 1) == A1[d+v])

                   {

                       z++;

                                     

                   }

                   

                   if ((A1[d] - 1) == A1[d + v])

                   {

                       x++;

                   }

               }

               // выводим на экран и ведм посчет количества count и четности count2

               if (z == size - 1)

               {

                   count++;

                   for (int n = 0; n < size; n++)

                   {

                       Console.Write(A1[n]);

                      

                   }

                   if (A1[size-1] % 2 == 0)

                   {

                       count2++;

                   }

                   Console.WriteLine();

               }

               if (x == size - 1)

               {

                   count++;

                   for (int n = 0; n < size; n++)

                   {

                       Console.Write(A1[n]);

                       

                   }

                   if (A1[size-1] % 2 == 0)

                   {

                       count2++;

                   }

                   Console.WriteLine();

               }

           }

           // выводим на экран данные о количестве и четности

           Console.WriteLine("Количество соседних чисел = {0}", count);

           Console.WriteLine("Из них четных = {0}", count2);

           count3 = count - count2;

           Console.WriteLine("Из них нечетных = {0}", count3);

           Console.ReadLine();

       }

   }

}

Результат работы программы

Задание 2

2. Составить программу вычисления:

Действительные числа а, b и натуральное N задаюaтся пользователем программы.

Решение

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace _444

{

   class Program

   {

       static void Main(string[] args)

       {

           int a, b, i;

           double N, h, F, s, FF, x;

           

           Console.WriteLine("Введите (a)");

           a = Convert.ToInt32(Console.ReadLine());

           Console.WriteLine("Введите (b)");

           b = Convert.ToInt32(Console.ReadLine());

           Console.WriteLine("Введите (N)");

           N = Convert.ToDouble(Console.ReadLine());

           h = (b - a) / N;

           FF = 0;

           for (i = 1; i <= N; i++)

           {

               s = 1+(a-(i-0.5));

               s = s * s;

               F = (a + ((i - 0.5) * h)) / s;

               FF = FF + F;

               Console.WriteLine("F{1}= ({0})", F, i);

               Console.WriteLine();

           }

           x=FF* h;

               Console.WriteLine("(F1+F2+F3+...+FN)h = {0}", x);

               Console.ReadLine();

       }

       

   }

}

Результат работы программы

Задание 3

3. Даны действительные числа . Составить программу вычисления суммы с точностью и ее последнего слагаемого:

Решение

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace _333

{

   class Program

   {

       static void Main(string[] args)

       {

           double x, e, k, a, b, w, v, sw, sx, f, g, i, ii, j, s, z, sum;

           Console.WriteLine("Введите X");

           x = Convert.ToDouble(Console.ReadLine());

           Console.WriteLine("Введите Эпсилон");

           e = Convert.ToDouble(Console.ReadLine());

           sum = 0;

           w = -1;

           k = 0;

          

           do

           {

               k++;

               i = 0;

               sw = w;

               for ( ; i < k; i++)

               {

                   sw = sw * w;

               }

               

               v = (2 * k) + 1;

               j = 0;

               sx = x;

               for ( ; j < v-1; j++)

               {

                   sx = sx * x;

               }

               a = sw * sx;

               

               g = k + 2;

               f = g;

               ii = 1;

               for (; ii < g; ii++)

               {

                   f = f * ii;

               }

               b = f * ((2 * k) + 1);

               

               s = a / b;

               z = s;

                      

               sum = sum+s;

               Console.WriteLine("[слагаемое]-({0})", s);

               // Считатаем, что требуемая точность достигнута, если очередное

               // слагаемое суммы оказалось по модулю меньше чем эпсилон

               z = Math.Abs(z);

           }

           while (z > e);

           Console.WriteLine();

           Console.WriteLine("[последнее слагаемое]-({0})", s);

           Console.WriteLine("[Сумма]-({0})", sum);

           Console.ReadLine();

       }

   }

}

Результат работы программы

Контрольная работа 3

Задание 1

1. В одномерный массив размерности N ввести произвольные числа. Ввести число К. Если в исходном массиве чисел больше чем К, то массиве выполнить кольцевой сдвиг массива так, чтобы его первый максимальный элемент оказался на K-м месте (N и K заданы). Кольцевой сдвиг массива выполняется всеми его элементами так, что элементы “выталкиваемые” из массива в одну сторону занимают освободившиеся место с другой стороны. Если К больше или равно числу элементов в исходном массиве, то создать новый массив, добавив в начало исходного  массива число К. Напечатать модифицированный массив.

Решение

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace _31

{

   class Program

   {

       static void Main(string[] args)

       

       

      

       {

           int[] A1 = new int[9] {4, 3, 8, 12, 29, 2, 31, 25, 3};

           int K, a, b, c, z, f;

           Console.WriteLine("Исходный массив");

           for (int i = 0; i < A1.Length; i++)

           {

               Console.Write(A1[i]+"\t");

           }

           Console.WriteLine();

           Console.WriteLine("Введите (К)");

           K=Convert.ToInt32(Console.ReadLine());

           // если К меньше количества элементов в массиве то...

           if (K < A1.Length)

           {

               // определяем первый максимальный элемент массива

               c = 1;

               a = A1[0];

               b = 0;

               f = 0;

               for (int i = 0; i < A1.Length; i++)

               {

                   if (i == A1.Length - 1)

                   { c = 0; }

                   b = A1[i + c];

                    

                   if (a < b)

                   {

                       a = b;

                       f = i + c + 1;

                   }

               }

               // выполняем крольцевой сдвиг массива

               do

               {

                   z = A1[A1.Length - 1];

                   for (int j = A1.Length - 1; j >= 1; j--)

                   {

                       A1[j] = A1[j - 1];

                   }

                   A1[0] = z;

               }

               while (A1[K - 1] != a);

               Console.WriteLine("Модифицированный массив");

               for (int i = 0; i < A1.Length; i++)

               {

                   Console.Write(A1[i] + "\t");

               }

           }

           // если К больше или равно количеству элементов в массиве то...

           else

           {

               int[] A2 = new int[10];

               // добавляем элемент в начало массива

               A2[0] = K;

               // копируем элементы исходного массива

               for (int i = 1; i < A2.Length; i++)

               {

                   A2[i] = A1[i - 1];

               }

               Console.WriteLine("Модифицированный массив");

               for (int i = 0; i < A2.Length; i++)

               {

                   Console.Write(A2[i] + "\t");

               }

 

           }

           Console.ReadLine();

       }

   }

}

Результат работы программы

Задание 2

2. Составить программу, которая получает матрицу Х размерностью m*n и и вектор А, размером m. Каждому элементу вектора поставлена в соответствие строка с тем же номером. Программа сортирует вектор А в порядке возрастания и формирует новую матрицу, расположив строки исходной матрицы в том же порядке, что и элементы вектора после сортировки.

Решение

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace _32

{

   class Program

   {

       static void Main(string[] args)

       {

           int[,] matr;

           matr = new int[6, 6];

           int[,] matr1;

           matr1 = new int[6, 6];

           int[] vect;

           vect = new int[6];

           int[] vect1;

           vect1 = new int[6];

           int a, b, c, f, r, w;

           r = (matr.Length / 6)-1;

           // заполняем матрицу 

           for (int i = 0; i < matr.Length / 6; i++)

           {

               for (int j = 0; j < matr.Length / 6; j++)

               {

                 matr[i, j] = i*j;

               }

           }

           // выводим матрицу на консоль

           Console.WriteLine("Исходная матрица");

           for (int i = 0; i < matr.Length / 6; i++)

           {

               for (int j = 0; j < matr.Length / 6; j++)

               {

                   Console.Write(matr[i, j] + "\t");

                   

               }

               Console.WriteLine();

           }

           // вводим с клавиатуры элементы вектора

           for (int i = 0; i < vect.Length; i++)

           {

               Console.WriteLine("Введите очередной элемент вектора");

               vect[i] = Convert.ToInt32(Console.ReadLine());

           }

           // выводим на консоль вектор

           Console.WriteLine();

           Console.WriteLine("Исходный вектор");

           for (int i = 0; i < vect.Length; i++)

           {

               Console.WriteLine(vect[i]);

             

           }

           Console.WriteLine();

           // сортируем вектор по возростанию

           a = 0;

           f = 0;

           for (int s = 0; s < vect.Length; s++)

           {

               c = 1;

               a = vect[0];

               b = 0;

               f = 0;

               for (int i = 0; i < vect.Length; i++)

               {

                   if (i == vect.Length - 1)

                   { c = 0; b = vect[vect.Length-1]; goto wer; }

                   b = vect[i + c];

               

                   if (a < b)

                   {

                       a = b;

                       f = i + c ;

                  

                   }

               }

           wer:

               vect[f] = 0;

               vect1[s] = a;

               // сопоставляем строки матрицы с элементами вектора через

               // переменную f, хранящую индекс отсортированного значения вектора

               for (int i = 0; i < matr1.Length / 6; i++)

               {

                  

                       matr1[r,i]= matr[i,f];

                   

               }

               r--;

           }

          Array.Reverse(vect1);

          // выводим на экран отсортированный по возростанию вектор

          Console.WriteLine();

          Console.WriteLine("Отсортированный вектор");

           for (int i = 0; i < vect1.Length; i++)

           {

               Console.WriteLine(vect1[i]);

           }

           // выводим на экран полученную матрицу

            Console.WriteLine("Полученная матрица");

            for (int i = 0; i < matr1.Length / 6; i++)

            {

                for (int j = 0; j < matr1.Length / 6; j++)

                {

                    Console.Write(matr1[i, j] + "\t");

                }

                Console.WriteLine();

            }

           Console.ReadLine();

       }

   }

}

Результат работы программы

Контрольная работа 4

Задание 1

Описать структуру с именем STUDENT, содержащую следующие поля:

- фамилия и инициалы;

- факультет (тип – перечисление);

- номер группы;

- успеваемость (массив из пяти элементов).

Написать программу, выполняющую следующие действия:

- заполнение данными массива, состоящего из восьми структур типа STUDENT;

- упорядочение записей по возрастанию факультета и номера группы;

- вывод записей в обратном порядке;

- вывод на дисплей фамилий и номеров групп для всех студентов, имеющих оценки 3 и 4. Если таких записей нет, то вывести соответствующее сообщение

Решение

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace _4

{

   enum ff: byte

   {

       ФВЗО=1,

       РТФ,

       АФ,

       ФАЭМ

   }

   struct student

   {

       public string fio;

       public ff fak;

       public int n;

       public int[] usp;

 

   }

   class Program

   {

       static void Main(string[] args)

       {

           int a;

           student[] st = new student[8];

          

           int[] oc = new int[5];

           qwe:

           Console.WriteLine("\aВыберите действие \n(1)Заполнение массива\n(2)Упорядочивание записей по группе  \n(3)Упорядочивание записей по факультету \n(4)Вывод записей в обратном порядке  \n(5)Вывести имена студентов имеющих оценки 3 и 4 \n(6)Выход ");

           a = Convert.ToInt32(Console.ReadLine());

           if (a == 1)

           {

               for (int i = 0; i < st.Length; i++)

               {

                    Console.WriteLine("Введите Фамилию студента и инициалы");

                    st[i].fio = Console.ReadLine();

                   Console.WriteLine("Выберите факультет \n (1)ФВЗО \n (2)РТФ \n (3)АФ \n (4)ФАЭМ");

                   st[i].fak = (ff)Convert.ToByte(Console.ReadLine());

                   Console.WriteLine("Введите номер группы");

                   st[i].n = Convert.ToInt32(Console.ReadLine());

                   Console.WriteLine("Введите успеваемость (пять оценок)");

                   st[i].usp = new int[5];

                   for (int j = 0; j < st[i].usp.Length; j++)

                   {

                       st[i].usp[j] = Convert.ToInt32(Console.ReadLine());

                       

                   }

                

               }

               Print(st);

               goto qwe;

              

           }

           if (a == 2)

           {

               Console.WriteLine();

               Console.WriteLine("Упорядочивание записей по номеру группы");

               Sort(ref st);

               Print(st);

               goto qwe;

           }

           if (a == 3)

           {

               Console.WriteLine();

               Console.WriteLine("Упорядочивание записей по факультету");

               SortF(ref st);

               Print(st);

               goto qwe;

           }

           if (a == 4)

           {

               Console.WriteLine();

               Console.WriteLine("Вывод записей в обратном порядке");

               Array.Reverse(st);

               Print(st);

               goto qwe;

           }

           if (a == 5)

           {

               Console.WriteLine();

               Console.WriteLine("Студенты, имеющие 3 и 4");

               Vyvod34(st);

               goto qwe;

           }

           if (a > 5)

           {

               return;  

           }

       }

        static void Sort(ref student[] A)

        {

            student[] B = A;

            for (int i=0; i<B.Length; i++)

 {

  for (int j=i; j<B.Length; j++)

  {

               if (A[j].n.CompareTo(B[i].n) < 0)

      {

   student h;

   h=B[i];

   B[i]=B[j];

   B[j]=h;

      }

 }

 }

             foreach (student a in B) ;

        }

        static void SortF(ref student[] A)

        {

            student[] B = A;

            for (int i = 0; i < B.Length; i++)

            {

                for (int j = i; j < B.Length; j++)

                {

                    if (A[j].fak.CompareTo(B[i].fak) < 0)

                    {

                        student h;

                        h = B[i];

                        B[i] = B[j];

                        B[j] = h;

                    }

                }

            }

            foreach (student a in B) ;

        }

        static void Vyvod34(student[] A)

        {

            int g = 0;

           

            for (int i = 0; i < A.Length; i++)

            {

                 int[]B = A[i].usp;

                int s=0;

                for (int j=0; j<B.Length; j++)

                {

                    

                    if (B[j] == 3) { s++; g++;}

                    if (B[j] == 4) { s++; g++;}

 

                }

                if (s > 0)

                {

                    

                    Console.WriteLine("\a{0}\t{1}", A[i].fio, A[i].n);

 

                }

            }

            if (g == 0)

            {

                Console.WriteLine(" отсутствуют");

            }

 

        }

        static void Print(student[] A)

        {

            Console.Write("\tФИО\t\tФакультет\tГруппа\tУспеваемость");

            Console.WriteLine();

            for (int i = 0; i < A.Length; i++)

            {

                Console.Write("{0}\t\t{1}\t\t{2}\t{3} {4} {5} {6} {7}", A[i].fio, A[i].fak, A[i].n, A[i].usp[0], A[i].usp[1], A[i].usp[2], A[i].usp[3], A[i].usp[4]);

                Console.WriteLine();

            }

 

        }

             

   }

}

Вводим данные с клавиатуры

Упорядочиваем по группе

Упорядочиваем по факультету

Выводим записи в обратном порядке

Выводим имена и группы студентов, имеющих 3 м 4

Контрольная работа 5

Задание 1

Текст состоит из предложений, разделенных точкой. Текст вводится с клавиатуры, его длина не превышает 1000 символов. Удалить из текста заданное слово. Слова разделены пробелами и знаками препинания.

Решение

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace _5

{

   class Program

   {

       static void Main(string[] args)

       {

           string text, word;

          

           Console.WriteLine("Введите текст");

           text = Console.ReadLine();

           

           Console.WriteLine("Введите слово");

           word = Console.ReadLine();

             // инициализируме массивы с разделителями

           char[] sS = new char[] { ' ' };

           char[] zp = new char[] { '.', ':', ';', ',', '?', '!', '\n', '\r' };

           // Инициализируем массив строк на подстроки по разделителям

           string[] result = text.Split(sS);

          

           string[] newtext = new string[result.Length];

           

           for (int i = 0; i < result.Length; i++)

           {

               

               string[] elem = result[i].Split(zp);

               // сравниваем каждый  элемент массива с word и если они не равны,

               // то добавляем его в новый массив

               if (elem[0] != word)

               {

                   newtext[i] = result[i];

               }

                              

           }

           // выводим на экран  результат

           for (int i = 0; i < newtext.Length; i++)

           {

               Console.Write("{0} ",newtext[i]);

           }

           Console.ReadLine();

       }

   }

}

Результат  работы

Контрольная работа 6

Задание 1

Проверить, попадает ли заданная точка (x1, y1) в прямоугольник ABCD. Прямоугольник задается с помощью левого верхнего и правого нижнего углов. Спроектировать необходимые классы и составить тестирующую процедуру.

Решение

using System;

using System.Collections.Generic;

using System.Text;

namespace _66

{

   //  Опишем класс tetr

    class tetr

   {

        public int koordX;

        public int koordY;

        public int koordA1;

        public int koordA2;

        public int koordB1;

        public int koordB2;

        // конструктор

        public tetr()

       {

           koordX = 0;

           koordY = 0;

           koordA1 = 0;

           koordB1 = 0;

           koordA2 = 0;

           koordB2 = 0;

       }

        // параметризованный конструктор

       public tetr(int koordX, int koordY, int koordA1, int koordA2, int koordB1, int koordB2)

       {

           this.koordX = koordX;

           this.koordY = koordY;

           this.koordA1 = koordA1;

           this.koordB1 = koordB1;

           this.koordA2 = koordA2;

           this.koordB2 = koordB2;

          

       }

       // метод для определения положения точки

       public void rez()

       {

           if (koordX <= koordA1 && koordY <= koordB2)

           {

               if (koordY >= koordB1 && koordX >= koordA2)

               {

                   Console.WriteLine("Точка в плоскости прямоугольника");

               }

               else { Console.WriteLine("Точка НЕ попала в плоскость прямоугольника"); }

           }

           else { Console.WriteLine("Точка НЕ попала в плоскость прямоугольника"); }

       }

       static void Main(string[] args)

           // тестирующая процедура

       {

           tetr s=new tetr();

           Console.WriteLine("Введите координат прямоугольника ");

           Console.WriteLine("Координаты левого верхнего угла");

           Console.Write("X - ");

           s.koordA1 = Convert.ToInt32(Console.ReadLine());

           Console.Write("Y - ");

           s.koordB1 = Convert.ToInt32(Console.ReadLine());

           Console.WriteLine("Координаты правого нижнего угла");

           Console.Write("X - ");

           s.koordA2 = Convert.ToInt32(Console.ReadLine());

           Console.Write("Y - ");

           s.koordB2 = Convert.ToInt32(Console.ReadLine());

           Console.WriteLine("Введите координат точки ");

           Console.Write("X - ");

           s.koordX = Convert.ToInt32(Console.ReadLine());

           Console.Write("Y - ");

           s.koordY = Convert.ToInt32(Console.ReadLine());

           s.rez();

           Console.ReadKey();

       }

       

   }

}

Результат работы программы




1. задание ремонтному подразделению на техническое обслуживание и ремонт вооружения Порядок разработки
2. Дать характеристику файловой системы сетевой операционной системы Windows NT Windows NT 4
3. 1] Введение [1
4. Лабораторная работа ’2 Определение КПД короткозамкнутого асинхронного двигателя методом разделения потер
5. История российской политической мысли восходит к идеям средневековой Киевской Руси
6. МУНИЦИПАЛЬНАЯ МЕТОДИЧЕСКАЯ ПЛОЩАДКА «ПЕДАГОГИЧЕСКОЕ ПРОЕКТИРОВАНИЕ В ДЕЯТЕЛЬНОСТИ СОВРЕМЕННОГО УЧИТЕЛЯ»
7. Фразеология (Поняття про фразеологізм)
8. Основные надписи
9. ТЕМА- Комплексна державна програма
10. Реферат- Триггеры