_ОП_ЛР2
.doc
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
-
Федеральное государственное автономное образовательное учреждение высшего образования
«Санкт-Петербургский государственный университет аэрокосмического приборостроения»
КАФЕДРА № 2
Преподаватель
доцент, к.т.н. Бариков Л.Н.
Отчёт
по лабораторной работе №2
по дисциплине Информатика
на тему: «Операторы ветвления»
Работу выполнил
студент гр. 4616 Павлов А.В.
Санкт-Петербург
Цель лабораторной работы: приобретение навыков структурного программирования на языке C/С++ при решении задач с использованием операторов ветвления if и switch.
Задание на программирование: используя технологию структурного программирования разработать программу для решения индивидуальной задачи определения места нахождения точки с произвольно заданными координатами на координатной плоскости. В случае если точка попадает в одну их выделенных областей, программа должна определять площадь этой области по аналитической формуле.
При решении должны быть использованы условный оператор if и оператор-переключатель switch.
Порядок выполнения работы:
1) Получить у преподавателя индивидуальное задание и выполнить постановку задачи: сформулировать условие, определить входные и выходные данные.
2) Разработать математическую модель:
- привести уравнения линий, ограничивающих выделенные штриховкой области;
- описать условия попадания точки в каждую выделенную область;
- составить аналитические формулы определения площади каждой выделенной области.
3) Построить схему алгоритма решения задачи.
4) Составить программу на языке C/С++.
5) Входные данные должны вводиться с клавиатуры по запросу.
Выходные данные (сообщения) должны выводиться на экран в развернутой форме.
6) Использовать стандартные потоковые объекты ввода/вывода cin и cout.
7) Проверить и продемонстрировать преподавателю работу программы на полном наборе тестов.
8) Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, схема алгоритма решения задачи, текст программы, контрольные примеры.
1-3)
Вариант 10
Математическая модель (условия принадлежности точек выделенным областям)
- условие 1 (принадлежность области М1):
x2 + (y-1) 2 > 1 {вне верхней окружности}
x < 0 {левее линии x = 0}
x > -1 {правее линии x = -1}
y < 2 {ниже линии y = 2}
Площадь области М1:
площадь квадрата (1 * 1) – площадь четверти круга (πr2 / 4) = 1 – π / 4 ≈0.2146
- условие 2 (принадлежность области М2):
x 2 + y2 < 1 {в центральной окружности}
(x + 1)2 + y2 < 1 {внутри левой окружности }
x2 + (y+1) 2 > 1 {вне нижней окружности }
Площадь области М2:
площадь четверти круга (πr2 / 4) = π / 4 ≈0.785
- условие 3 (принадлежность области М3):
(x - 1)2 + y2 < 1 {внутри правой окружности}
x2 + y2 > 1 {вне центральной окружности}
y > 0 {выше оси x }
Площадь области М3:
4Sквадрата – Sк= 4-3,14 = 0,86. Делим на 4 части 0,86/4= 0,215. 0,215+Sк/4=0,215+0,785= 1
- условие 4 (принадлежность области М4):
x2 + y2 < 1 {внутри центральной окружности}
(x + 1)2 + y2 > 1 {вне левой окружности}
(x - 1)2 + y2 > 1 {вне правой окружности}
y < 0 {ниже оси x}
Площадь области М4:
площадь квадрата (1 * 1) – площадь четверти круга (πr2 / 4) и умножаем на 2 т.к две части = (1 – π / 4) * 2 ≈0.42
- условие 5 (принадлежность области М5):
(x+1)2 + y+2 > 1 {вне левой окружности}
y > -2 {выше линии y = -2}
x > -2 {правее линии x = -2}
x < -1 {левее x=-1}
Площадь области М5:
площадь квадратов (2 * 1) – площадь четверти круга (πr2 / 4) = 2 – π / 4 ≈ 1.2146
Схема алгоритма решения
да нет
да нет
да нет
i=1
да нет
i=2
да нет
i=3
i=4 i=5
1
2
3
4
5
Текст программы.
#define _USE_MATH_DEFINES
#include <iostream>
#include <cmath>
#include <windows.h>
using namespace std;
int main()
{
unsigned short i = 0; //номер области на рисунке
double x, y, //координаты точки
s; //площадь области
cout << "Vvedite koordinat tochki: x, y ";
cin >> x >> y;
if (x < 0 && y < 2 && x > -1 && x*x + (y - 1)*(y - 1) > 1)
i = 1;
else
if ((x + 1) * (x + 1) + y * y < 1 && x * x + (y + 1) * (y + 1) > 1 && x*x + y*y < 1)
i = 2;
else
if (y>0 && (x - 1)*(x - 1) + y*y <1 && x*x + y*y>1)
i = 3;
else
if (x*x + y*y<1 && y<0 && (x + 1)*(x + 1) + y*y >1 &&
(x - 1)*(x - 1) +y*y>1)
i = 4;
else
if (x>-2 && x<-1 && y>-2 && (x + 1)*(x + 1) + y*y >1)
i = 5;
if (i)
{
cout << "Tochka v oblasti M" << i << endl;
switch (i)
{
case 1:
s = 1 - M_PI / 4;
break;
case 2:
s = M_PI / 4;
break;
case 3:
s = M_PI / 4 + 0.215;
break;
case 4:
s = (1- M_PI / 4 ) * 2;
break;
case 5:
s = 2 - M_PI / 4;
break;
}
cout << "Plosad Oblasti = " << s;
}
else cout << "Tochka vne oblasti"; system("pause");
return 0;
}
Примеры.