- •2. Методические указания к выполнению лабораторных работ
- •Лабораторная работа №1 Следование
- •Варианты индивидуальных заданий Выполнить поразрядные логические операции над машинными кодами
- •Пример программы
- •Лабораторная работа №2 Операторы ветвления
- •Варианты индивидуальных заданий
- •Пример разработки математической модели и схемы алгоритма решения задачи для варианта задания вида:
- •Текст программы
- •Лабораторная работа №3 Операторы цикла
- •Варианты индивидуальных заданий
- •Пример программы
- •Лабораторная работа №4 Статические массивы
- •Варианты индивидуальных заданий
- •Пример программы на обработку одномерного массива
- •Пример программы на обработку двумерного массива (матрицы)
- •Лабораторная работа №5 Динамические массивы
- •Варианты индивидуальных заданий
- •Пример программы на обработку одномерного массива
- •Пример программы на обработку двумерного массива (матрицы)
- •Лабораторная работа №6 Методы сортировки
- •Варианты индивидуальных заданий Методы сортировки
- •Области сортировки элементов матриц
- •Примеры программ
- •Лабораторная работа №7 Передача имён функций в качестве параметров
- •Текст программы
- •Лабораторная работа №8 Строки и текстовые файлы
- •Варианты индивидуальных заданий
- •Пример программы
- •Лабораторная работа №9 Структуры и файлы структур
- •Пример программы
- •Лабораторная работа №10 Линейные списки
- •Варианты индивидуальных заданий
- •Пример программы
- •Лабораторная работа №11 Стек, дек, очередь
- •Варианты индивидуальных заданий
- •Пример программы
- •Лабораторная работа №12 Классы
- •Варианты индивидуальных заданий
- •Примеры программ
- •Литература
Пример разработки математической модели и схемы алгоритма решения задачи для варианта задания вида:
Математическая модель (условия принадлежности точек выделенным областям)
- условие 1 (принадлежность области М1):
(x-1)2 + y2 > 1 {вне правой окружности}
x < 2 {левее линии x = 2}
x > 1 {правее линии x = 1}
y > 0 {выше линии y = 0}
y < 2 {ниже линии y = 2}
Площадь области М1:
площадь прямоугольника (2 * 1) – площадь четверти круга (πr2 / 4) = 2 – π / 4≈1.2146
- условие 2 (принадлежность области М2):
(x + 1)2 + y2 > 1 {вне левой окружности}
x > -2 {правее линии x = -2}
y < 1 {ниже линии y = 1}
x < -1 {левее линии x = -1}
y > 0 {выше оси x }
Площадь области М2:
площадь квадрата (1 * 1) – площадь четверти круга (πr2 / 4) = 1 – π / 4 ≈0.2146
- условие 3 (принадлежность области М3):
(x + 1)2 + y2 < 1 {внутри левой окружности}
x2 + y2 < 1 {внутри центральной окружности}
y > 0 {выше оси x }
Площадь области М3:
площадь
сектора 1200
(πr2
/ 3) – площадь треугольника (
/ 2 * 0.5) =
π / 3 – / 2 *0.5 = π / 3 – / 4 =0.6142
- условие 4 (принадлежность области М4):
x2 + y2 > 1 {вне центральной окружности}
(x – 1)2 + y2 < 1 {внутри правой окружности}
x2 + (y + 1)2 > 1 {вне нижней окружности}
Площадь области М4:
площадь квадрата (1 * 1) - четверть площади круга (πr2 / 4) – 2*(площадь прямоугольника (1 * (1 - /2)) – площадь сектора 600 (πr2 / 6) + площадь треугольника ( / 2 * 0.5)) = 1 - π / 4 – 2 * (1 - / 4 - π / 6) = / 2 + π / 3 - π / 4 – 1 ≈ 0.1278
- условие 5 (принадлежность области М5):
x2 + (y+1)2 > 1 {вне нижней окружности}
y > -2 {выше линии y = -2}
y < -1 {ниже линии y = -1}
x > -1 {правее линии x = -1}
x < 0 {левее оси y}
Площадь области М5:
площадь квадрата (1 * 1) – площадь четверти круга (πr2 / 4) = 1 – π / 4 ≈ 0.2146
Схема алгоритма решения
да нет
да нет
да нет
i=1
да нет
i=2
да нет
i=3
i=4
i=5
1
2
3
4
5
Текст программы
//Определение номера области, в которую попадает точка с произвольно заданными координатами на плоскости, и площади этой области
#include<iostream.h>
#include<math.h>
int main()
{int i = 0 ; //номер области на рисунке
float x, y, //координаты точки
s1, s2, s3, s4, s5 ; //площади областей
cout << "Введите координаты точки: x, y " ;
cin >> x >> y ;
if(y > 0 && y < 2 && x > 1 && x < 2 && x * x + (y - 1) * (y -1) >1)
{cout << "Точка в области M1. " ; i = 1 ;
}
else if(x > -2 && y < 1 && x < -1 && y > 0 &&
(x + 1) * (x + 1) + y * y > 1)
{cout << "Точка в области М2. " ; i = 2 ;
}
else if((x+1) * (x+1) + y * y < 1 && x * x + y * y < 1 && y > 0)
{cout << "Точка в области М3. " ; i = 3 ;
}
else if(x * x + y * y > 1 && (x - 1) * (x - 1) + y * y < 1 &&
x * x + (y + 1) * (y + 1) < 1)
{cout << "Точка в области М4. " ; i = 4 ;
}
else if(y < -1 && y > -2 && x < 0 && x > -1 &&
x * x + (y + 1) * (y + 1) > 1)
{cout << "Точка в области М5. " ; i = 5 ;
}
else cout << "Точка вне выделенных областей" ;
cout.precision(4); //число знаков после дес. точки
switch(i)
{case 1: cout << "S1 = " << (s1 = 2 - M_PI / 4) ;
break ;
case 2: cout << "S2 = " << (s2 = 1 - M_PI / 4) ;
break ;
case 3: cout << "S3 = " << (s3 = M_PI/3 – sqrt(3)/4) ;
break ;
case 4: cout << "S4 = " << (s4 = sqrt(3)/2 + M_PI/3 - M_PI/4-1) ;
break ;
case 5: cout << "S5 = " << (s5 = 1 - M_PI / 4) ;
}
return 0 ;
}
