97007

Решение комплексных задач

Курсовая

Информатика, кибернетика и программирование

Лучшее качества компьютеров проявляются не тогда, когда они рассчитывают значения сложных выражений, а когда многократно, с незначительными изменениями, повторяют сравнительно простые операции. Даже очень простые расчеты могут поставить человека в тупик, если их надо повторить тысячи раз, а повторять операции миллионы раз человек совершенно не способен.

Русский

2015-10-13

613 KB

0 чел.

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

Сибирский государственный технологический университет

Факультет автоматизации информационных технологий

Кафедра информационных технологий

Решение комплексных задач

 

Пояснительная записка

(СТ.000000.008 ПЗ)

Проверил:

_____________ Е.М. Товбис

     (подпись)

_________________________

                  (оценка, дата)

Выполнил студент группы 21-01

___________  Шинкарук О.А.

     (подпись)


СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ

Студент: Шинкарук Олег Анатольевич

Факультет: автоматизации и информационных технологий, 1 курс, гр. 21-01

Тема курсовой работы:  Решение комплексных задач

Провести исследование языка программирования С++. После исследования решить задачи согласно выданного варианта.


РЕФЕРАТ

Целью курсовой работы является исследование языка программирования С++. Пояснительная записка содержит 2 раздела. Содержит 21 страницу текста, 2 источника данных.

КЛЮЧЕВЫЕ СЛОВА:  АЛГОРИТМИЗАЦИЯ, ЦИКЛЫ, ПРОГРАММИРОВАНИЕ, УСЛОВИЯ,  С++.


Содержание

[1] Содержание

[2] Линейные алгоритмы.

[2.1] Задача 1

[2.2] 1. Вычислить выражения по предложенным формулам.

[3] Условный алгоритм, цикл

[3.1] Задача 2

[3.1.1] 1. Протабулировать кусочную функцию F на интервале Xs до Xf с шагом dx, где a,b,c ,Xs,Xf,dx –действительные числа.

[4] Массивы

[4.1] Задача 4

[4.1.1] 2. Упорядочить элементы массива по возрастанию.

[4.1.2] Код программы:

[4.2] Задача 4

[4.3] Двумерные массивы:

[5] СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ


Линейные алгоритмы.

Линейный алгоритм описание действий, которые выполняются однократно в заданном порядке. Исполнитель выполняет действия последовательно, одно за другим в том порядке в котором они следуют.

Задача 1

1. Вычислить выражения по предложенным формулам.

Код программы:

#include <math.h>

#include "stdafx.h"

#include <iostream>

#include <conio.h>

void main()

{

float a,b,x,y;

printf("Enter a and b");

scanf("%e",&a);

  scanf("%e",&b);

x=sin(a)+cos(2*b-a)/cos(a)-sin(2*b-a)

y=1+sin(2*b)/cos(a)-sin(2*b-a);

printf("Answer x: %e",&x);

printf(" Answer y: %e",&y);

getch();

return 0;

}

Блок схема программы:


В данной задаче использовались следующие функции:

1.  printf().

Функция printf() является функцией стандартного вывода. С помощью этой функции можно вывести на экран монитора строку символов, число, значение переменной... 

Функция printf() имеет прототип в файле stdio.h

В случае успеха функция printf() возвращает число выведенных символов.

Управляющая строка содержит два типа информации: символы, которые непосредственно выводятся на экран, и спецификаторы формата, определяющие, как выводить аргументы.

Функция printf() это функция форматированного вывода. Это означает, что в параметрах функции необходимо указать формат данных, которые будут выводиться. Формат данных указывается спецификаторами формата. Спецификатор формата начинается с символа % за которым следует код формата.

Спецификаторы формата:

символ

%d

целое десятичное число

%i

целое десятичное число

%e

десятичное число в виде x.xx e+xx

%E

десятичное число в виде x.xx E+xx

%f

десятичное число с плавающей запятой xx.xxxx

%F

десятичное число с плавающей запятой xx.xxxx

%g

%f или %e, что короче

%G

%F или %E, что короче

%o

восьмеричное число

%s

строка символов

%u

беззнаковое десятичное число

%x

шестнадцатеричное число

%X

шестнадцатеричное число

%%

символ %

%p

указатель

%n

указатель

2. Функция scanf() - функция форматированного ввода. С её помощью вы можете вводить данные со стандартного устройства ввода (клавиатуры). Вводимыми данными могут быть целые числа, числа с плавающей запятой, символы, строки и указатели.

Функция scanf() имеет следующий прототип в файле stdio.h

Функция возвращает число переменных которым было присвоено значение.

Управляющая строка содержит три вида символов: спецификаторы формата, пробелы и другие символы. Спецификаторы формата начинаются с символа %.

Спецификаторы формата:

%c

чтение символа

%d

чтение десятичного целого

%i

чтение десятичного целого

%e

чтение числа типа float (плавающая запятая)

%h

чтение short int

%o

чтение восьмеричного числа

%s

чтение строки

%x

чтение шестнадцатеричного числа

%p

чтение указателя

%n

чтение указателя в увеличенном формате

3. Функция getch();  Прототип: conio.h

Функция getch() возвращает очередной символ, считанный с консоли, но не выводит этот символ на экран.

Условный алгоритм, цикл

Разветвляющийся алгоритм.

Во многих случаях требуется, чтобы при одних условиях выполнялась одна последовательность действий, а при других – другая.

Разветвляющийся алгоритм - алгоритм, в котором в зависимости от условия выполняется либо одна, либо другая последовательность действий.

Эти предложения начинаются с проверки какого-либо условия: пошел дождь, прозвенел будильник, встретил Сашу… Далее в зависимости мы либо вылиняем какое-либо действие, либо не выполняем его (или выполняем какое-то другое действие).

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

Циклический алгоритм:

Лучшее качества компьютеров проявляются не тогда, когда они рассчитывают значения сложных выражений, а когда многократно, с незначительными изменениями, повторяют сравнительно простые операции. Даже очень простые расчеты могут поставить человека в тупик, если их надо повторить тысячи раз, а повторять операции миллионы раз человек совершенно не способен.

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

Перечень повторяющихся действий называют телом цикла.

Циклические алгоритмы бывают двух типов:

Циклы со счетчиком, в которых какие-то действия выполняются определенное число раз;

Циклы с условием, в которых тело цикла выполняется, в зависимости от какого-либо условия. Различают циклы с предусловием и постусловием.

Циклы со счетчиком используют когда заранее известно какое число повторений тела цикла необходимо выполнить.

Часто бывает так, что необходимо повторить тело цикла, но заранее не известно, какое количество раз это надо сделать. В таких случаях количество повторений зависит от некоторого условия. Такие циклы называются циклы с условием. Циклы в которых сначала проверяется условие, а затем, возможно, выполняется тело цикла называют циклы с предусловием. Если условие проверяется после первого выполнения тела цикла, то циклы называются циклы с постусловием.

Задача 2

1. Протабулировать кусочную функцию F на интервале Xs до Xf с шагом dx, где a,b,c ,Xs,Xf,dx –действительные числа.

Код программы:

#include "stdafx.h"

#include <conio.h>

#include <math.h>

#include <iostream>

int _tmain(int argc, _TCHAR* argv[])

{float F,a,b,c,Xs,Xf,dX,x;

printf("Enter a b c Xs Xf dX \n");

scanf("%f%f%f%f%f%f",&a,&b,&c,&Xs,&Xf,&dX);

for(x=Xs; x<Xf; x+=dX)

{ if (a<0 && x!=0)

{

 F=a*(pow(x,2))+(b*x)+c;

 printf("Answer F: %f",F);

}

 else if(a>0 && x==0)

{

 F=(-a)/(x-c);

 printf(" Answer F: %f",F);

}

 else

{

 F=(x/c)-3;

 printf(" Answer F: %f",F);

 

}

}

getch();

 return 0;

}

Блок-схема программы:

В данной задаче использовались следующие функции:

  •  Условный оператор if

Для организации вычислений в зависимости от какого-либо условия в C++ предусмотрен условный оператор if, который в общем виде записывается следующим образом:

if (условие) оператор_1; else оператор_2;

Здесь условие - это логическое выражение, переменная или константа.

Работает условный оператор следующем образом. Сначала вычисляется значения выражения, записанного в виде условия. Если оно имеет значение истина (true), выполняется оператор_1. В противном случае (значение ложное (false) ) оператор_2. 

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

if (условие) { оператор_1;  оператор_2; … }

else { оператор_1; оператор_2; … }

Альтернативная ветвь else в условном операторе может отсутствовать, если в ней нет необходимости.

  •  Оператор цикла for:

Операторы цикла используются для организации многократно повторяющихся вычислений.

Любой цикл состоит из тела цикла, то есть тех операторов, которые выполняются несколько раз, начальных установок, блокамодификации параметра цикла и проверки условия выхода из цикла, которая может размещаться либо до тела цикла(тогда говорят о цикле с предусловием ), либо после тела цикла (цикл с постусловием ).

Один проход цикла называется итерацией. Переменные, принудительно изменяющиеся в цикле и использующиеся при проверке условия выхода из него, называются параметрами цикла. Целочисленные параметры цикла, изменяющиеся на целое число на каждойитерации, называются счетчиками цикла.

Нельзя передавать управление извне внутрь цикла. Выход из цикла возможен как при выполнении условия выхода, так и  по операторам break, return или безусловного перехода.

  •  Цикл с параметром (for)

Цикл с параметром имеет следующий формат:

for ( инициализация; выражение; модификации) оператор;

Инициализация используется для объявления и присвоения начальных значений величинам, используемым в цикле. В этой части можно записать несколько операторов, разделенных запятой.

Выражение определяет условие выполнения цикла: если оно не равно 0 (истинно), цикл выполняется.

Модификации выполняются после каждой итерации цикла и служат обычно для изменения параметров цикла. В части модификаций можно записать несколько операторов через запятую.

Простой или составной оператор представляет собой тело цикла. Любая из частей оператора for может быть опущена (но точки с запятой надо оставить на своих местах!). В любой части можно использовать операцию "запятая" (последовательное вычисление).

Задача №3

«Вложенные циклы (вычисление суммы ряда)»

Вычислить и вывести на экран в виде таблицы значения функции заданной с помощью ряда Тейлора.

Код программы:

#include <math.h>

#include <iostream>

#include <stdio.h>

using namespace std;

int main()

{

const int MaxIter=10;

float x, eps;

cout<<" \n Vvedite argument i tochnost:";

cin>>x>>eps;

int flag= 1;

float y=x, ch=x;

for (int n=0; fabs(ch)>eps; n++)

{

ch*=x*x/(2*n+2);

y+=ch;

if (n>MaxIter)

{

cout <<"\n Ryad rashoditsya!";

flag = 0;

break;

}

}

if (flag)

cout<<"\n Znachenie fynkcii:"<<y;

getchar ();

return 0;

}

Массивы

Массив — упорядоченный набор данных, для хранения данных одного типа, идентифицируемых с помощью одного или нескольких индексов. В простейшем случае массив имеет постоянную длину и хранит единицы данных одного и того же типа.

Количество используемых индексов массива может быть различным. Массивы с одним индексом называют одномерными, с двумя — двумерными и т. д. Одномерный массив (колонка, столбец) нестрого соответствует вектору в математике, двумерный — матрице. Чаще всего применяются массивы с одним или двумя индексами, реже — с тремя, ещё большее количество индексов встречается крайне редко.

Задача 4

Дан массив, состоящий из n вещественных элементов, вычислить:

  1.  Номер минимального  элемента массива:

Код программы:

#include <iostream>

using namespace std;

void main()

{

int a[100], p, r, nmin, min2, min, sum;

cout << "Введите количество элементов массива ";

 cin >> r;

 cout << "Заполните массив ";

 for (int i = 0; i < r; i++)

 {cin >> a[i];}  //Ишем номер минимального элемента

 nmin = 1;

min = a[0];

for (int i = 0; i < r; i++)

{if (min>a[i])

{min = a[i];

nmin = i + 1;}

}

cout << "\n Минимальный элемент =" << min << endl;

 cout << "Его номер =" << nmin <<"\n"<<endl;

 system("pause");

}

Блок-схема программы:

2. Произведение элементов массива расположенных между максимальным и минимальным элементами.

Код программы:

#include <iostream>

using namespace std;

void main()

{

setlocale(LC_ALL, ".1251");

int a[100], p, r, nmin, min2, min, sum;

cout << "Введите колличество элементов массива ";

 cin >> r;

 cout << "Заполняй массив давай! ";

//Заполняем массив

for (int i = 0; i < r; i++)

 {

 cin >> a[i];

}

//Поиск нулевых элементов

 min2 = 0;

 min = 0;

for (int i = 0; i < r; i++)

{

 if (a[i] == 0)

 {

  min = i;

  break;

 }

}

for (int i = r; i > 0; i--)

{

 if (a[i] == 0)

 {

  min2 = i;

  break;

 }

 }

}

//Ишем Сумму между нулевыми элементами

 if (min2 == min)

{cout << "\n Произведение между нулевыми элементами = Нулю!";}

 else

{

 sum = 1;

 for (int i = min+1; i <= min2-1; i++)

 {

  sum = sum * a[i];

 }

 cout << "\n Произведение между нулевыми элементами = " << sum << "\n";

 system("pause");

}

Блок схема программы:

2. Упорядочить элементы массива по возрастанию.

Код программы:

#include <iostream>

using namespace std;

void main()

{int a[100], p, r, nmin, min2, min, sum;

cout << "Введите колличество элементов массива ";

 cin >> r;

 cout << "Заполняй массив давай! ";

//Заполняем массив

for (int i = 0; i < r; i++)

 {cin >> a[i];}

//Сортируем по модулю не привышаюшие 1

 p = 0;

for (int i = r - 1; i >= 0; i--)

{for (int j = 0; j < i; j++)

{if (abs(a[j]) > 1)

{p = a[j];

a[j] = a[j + 1];

a[j + 1] = p;

p = 0;}} }

 cout << "\nСначало не превышающие один по модуля! Потом остальные! ";

for (int i = 0; i < r; i++)

{cout << " " << a[i]; }

cout << ("\n");

system("pause");

}

Блок-схема  программы:

В данной задаче использовались следующие функции:

Cin - это объект входного потока пространства имен std:

std::cin >> x;

В данном коде программы используется оператор cin, операция взятия из потока >>чтобы получить от пользователя введенное им значение. Объектstd::cin забирает вводимую пользователем информацию из стандартного потока ввода, который обычно является клавиатура. Функция Cinдостаточно интелектуальна, чтобы понять, какая информация введена с клавиатуры. Ведь мы можем ввести целое число, а также можем ввести дробное, сивмольное или текст.

Cout - это объект выходного потока пространства имен std::. Это необъявленный идентификатор. Его не нужно объявлять. Его нужно только подключать к программе при помощи слова include: #include <iostream>

std::cout <<"Выходной поток"; В данном коде программы используется оператор cout, операция поместить в поток<<, чтобы вывести на экран пользователю определенную информацию. В данном случае на экран выводится Выходной поток. cout достаточно умный, чтобы определить, что нужно вывести на экран, то есть это будет переменная дробного числа или целого или символьного.

Задача 4

Двумерные массивы:

Определить:

Характеристикой столбца целочисленной матрицы назовем сумму его отрицательных

нечетных элементов. Переставляя столбцы заданной матрицы расположить их в соответствии с

ростом характеристик.

Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент

Код программы:

#include <iostream>

using namespace std;

void main(){

int a[8][8] = { {  1,  2,  3,  4,  5,  6, },

                { -2, -2,  2,  0,  0, -6 },

                { -9,  2,  1,  2,  0,  9, },

                { -4,  0,  2,  3,  1,  5, },

                  {  5,  2,  3,  1,  5,  9, },

                {  6,  2,  3,  5, -3,  6, }};

cout << "Наша матрица_\n ";

for (int i = 0; i < 6; i++)

{ cout << "\n";

 for (int j = 0; j < 6; j++)

 {cout << a[i][j] << "\t ";

 }

}

 1)Характеристикой столбца целочисленной матрици назовём сумму модулей его отрицательных нечётных элементов

 cout << "\n";

int sum = 0;

int b[10];

for (int i = 0; i < 6; i++)

{ sum = 0;

 for (int j = 0; j < 6; j++)

 { if (a[j][i]<0)

  {sum = sum + a[j][i]; }

  if (j == 5)

  {b[i] = sum;}

 }

}

cout << "\n= ";

for (int i = 0; i < 6; i++)

{cout << b[i] << " \t"; }

cout << "\n ";

int c[10];

int p = 0;

for (int i = 0; i < 6; i++)

{for (int j = 0; j < 5; j++)

 {if (abs(b[j])> abs(b[j + 1]))

   {p = b[j];

   b[j] = b[j + 1];

   b[j + 1] = p;

   for (int x = 0; x < 6; x++)

   {c[x] = 0;}

   for (int x = 0; x < 6; x++)

   {c[x] = a[x][j];}

   for (int x = 0; x < 6; x++)

   {a[x][j] = a[x][j+1];}

   for (int x = 0; x < 6; x++)

   {a[x][j+1] = c[x];}

  }

 }

}

for (int i = 0; i < 6; i++)

{cout << "\n";

for (int j = 0; j < 6; j++)

{cout << a[i][j] << "\t";}

}

cout << "\n\n= ";

for (int i = 0; i < 6; i++)

{cout << b[i] << " \t"; }

 2)Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент.

cout << "\nCумма элементов в тех Столбцах, ";

cout << "\nкоторые содержат хотя бы один отрицательный элемент= \n";

 for (int i = 0; i < 6; i++)

{for (int j = 0; j < 6; j++)

 { sum = 0;

  if (a[j][i]<0)

  {for (int k = 0; k < 6; k++)

   {sum = sum + a[k][i]; }

   cout << "Cтолбца " << i +1 << " = " << sum << endl;

   break;}}}

cout << "\n";

system("pause");

 return;

}

Функции

Функция - это модуль в с++. Функции в языке си позволяют создавать модульные программы, то есть программы состоящие из модулей. Для написания программ, лучше использовать готовые стандартные функции библиотеки c++. Если же вы хотите в программе использовать свою функцию, то необходимо объявить прототип функции, после этого в конце программы написать реализацию функции.

Функция может принимать значения или не принимать вообще. Если функция не принимает параметры, то пишется имя функции и пустые скобки, если функция принимает параметры, то в скобках через запятую пишутся параметры. Функция может принимать параметры такие, как: массив, указатель, ссылку, целочисленные переменные, дробные и т. д.

Задача №5

Даны действительные числа s,t. Получить h(s,t)+max(h*h(s-t,s*t),h*h*h*h(s-t,s+t))+h(1,1), где 

#include<iostream>

#include<conio.h>

#include<math.h>

using namespace std;

double h(double a, double b) {

return (a/(1+b*b))+(b/(1+a*a))-pow((a-b),3);

}

double max (double a, double b) {

if (a > b) return a;

return b;

}

void main () {

double s,t;

cout << "Enter s, t" << endl;

cin >> s >> t;

cout << endl << "h(s,t)= " << h(s,t) + max(pow(h(s-t,s*t), 2), pow(h(s-t, s+t),4)) + h(1,1);

getch();

}

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1.  О FreeBSD [Электронный ресурс] – режим доступа: http://www.freebsd.org/ru/about.html
  2.  FreeBSD vs Linux [Электронный ресурс] – режим доступа:http://www.freebsd.org/doc/ru/articles/explaining-bsd/compairing-bsd-and-linux.html
  3.  Arch Compared to Other Distributions [Электронный ресурс] – режим доступа: https://wiki.archlinux.org/index.php/Arch_Compared_to_Other_Distributions_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)


 

А также другие работы, которые могут Вас заинтересовать

21147. Методы обеспечения и повышения надежности 26.5 KB
  Общие методы реализуются на стадиях проектирования и производства и осуществляются следующими путями: максимальным упрощением принципиальной схемы с одновременным уменьшением числа элементов с невысокой надежностью; ослаблением влияния внешних воздействий герметизацией амортизацией охлаждением и т. Специальные методы реализуются путем облегчения режима работы элементов схем и конструкции предварительной тренировкой элементов резервированием и др. Облегчение режима работы схемных элементов снижает интенсивность отказов. Для учета нагрузки...
21148. МЕТОДЫ ОБРАБОТКИ ИЗДЕЛИЙ ЭВМ 124 KB
  Для всех методов обработки кроме ультразвуковых производительность не зависит от твердости и вязкости обрабатываемого материала. Электроэрозионные методы обработки Электроэрозионные методы обработки это совокупность электрических химических воздействий на обрабатываемую деталь для придания ей заданной формы и размеров. Основными методами электроэрозионной обработки являются электроискровая и анодномеханическая.
21149. МЕХАНИЧЕСКИЕ ВОЗДЕЙСТВИЯ НА КОНСТРУКЦИИ СВТ 38.5 KB
  Наибольшее разрушающее воздействие на конструкцию СВТ оказывают вибрации. Он в свою очередь приводит к увеличению амплитуды колебаний СВТ. Введение амортизаторов между СВТ и объектом в качестве среды уменьшающей амплитуду передаваемых колебаний и ударов снижает действующие на СВТ механические силы но не уничтожают их полностью.
21150. Основные характеристики МПП общего применения на фольгированном диэлектрике 855.5 KB
  Основные характеристики МПП общего применения на фольгированном диэлектрике Показатель Характеристика Область применения Спецтехника вычислительная техника средства связи Класс точности 1;2; 3 Группа жесткости I IV Рекомендуемые максимальные размеры мм 360 х 420 γ = 033 Материал основания Стеклотекстолит фольгированный например СТФ1 СТФ2 стеклоткань СТП1 Минимальный диаметр отверстия мм Переходное 04 Сквозное 06 Минимальная ширина проводника мм 025 Тип производства Мелкосерийное серийное крупносерийное Методы...
21151. Культура українських земель XIX ст. Національно-культурне відродження 870.53 KB
  У XIX ст. розвиток української культури обумовлювався підпорядкуванням українських земель двом імперіям – Російській та Австро-Угорській. Обидві імперії були багатонаціональними, з титульною (панівною) нацією. І Росія, і Австро-Угорщина проводили колонізаторську політику, підтримували антиукраїнські сили
21152. Поиск и устранение неисправностей в CD-ROM 57.5 KB
  Много неприятностей доставляют и так называемые условные отказы плавающие неисправности когда чтение диска либо внезапно прекращается а потом возобновляется либо производится с ошибками. Конечно многие отказы связаны с дешевыми пиратскими дисками использование которых может нарушить бесперебойную работу устройства. Причем помимо того что информация на таком диске может не читаться использование несбалансированных дисков в высокоскоростных приводах зачастую ведет к разрушению как самого диска он буквально разлетается на мелкие...
21153. Неисправности винчестера 81.5 KB
  Изза сложности работ с парами металла понадобилось много лет для разработки технологии обеспечивающей практически идеальную поверхность диска при разумной стоимости. Эти дорожки содержат специальные файлы DOS основной каталог диска и информацию о распределении дискового пространства. Если головка упадет на эту область DOS не сможет читать с диска вообще и фактически все данные окажутся потерянными несмотря на то что каждый байт данных лежит нетронутый гдето на диске.
21155. Основные определения ПП 122.5 KB
  Печатная плата: 1 крепежные отверстия; 2 концевые печатные контакты; 3 монтажное отверстие; 4 место маркировки ПП; 5 печатный проводник; 6 ориентирующий паз. Односторонняя печатная плата ОПП ПП на одной стороне которой выполнены элементы проводящего рисунка рис. Двусторонняя печатная плата ДПП ПП на обеих сторонах которой выполнены элементы проводящего рисунка и все требуемые соединения в соответствии с электрической принципиальной схемой рис.