
Чурилов / лаб 2
.docxМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ
Кафедра вычислительных систем и сетей
ОЦЕНКА
ПРЕПОДАВАТЕЛЬ
доцент _________________ Л.Н. Бариков
подпись, дата
ЛАБОРАТОРНАЯ РАБОТА №2
Операторы ветвления
по дисциплине «Основы программирования»
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. Z9411 __________________ А.С. Чурилов
подпись, дата
Студенческий билет № 2019/3684
Санкт-Петербург 2020г.
Цель работы:
Приобретение навыков структурного программирования на языке C/C++ при решении задач с использованием операторов ветвления if и switch.
Индивидуальное задание на лабораторную работу:
Используя технологию структурного программирования разработать программу для решения индивидуальной задачи (см. рис. 1) по определению места нахождения точки с произвольно заданными координатами на координатной плоскости. В случае если точка попадает в одну их выделенных областей, программа должна определять площадь этой области по аналитической формуле.
При решении должны быть использованы условный оператор if и оператор-переключатель switch.
|
Рисунок 1 – схема для индивидуальной задачи |
Математическая модель:
Укажем условия принадлежности точек с введенными с клавиатуры координатами выделенным областям и аналитически определим площади данных секторов.
Условие 1. (принадлежности области М1):
внутри
левой верхней окружности;
вне
левой окружности;
вне
центральной верхней окружности.
Площадь области М1:
Условие 2. (принадлежности области М2):
внутри
центральной окружности;
внутри
центральной верхней окружности;
вне
правой верхней окружности;
вне левой окружности.
Площадь области М2:
Условие 3. (принадлежности области М3):
внутри
правой окружности;
вне правой верхней окружности;
вне
правой нижней окружности;
x>1 правее линии x=1.
Площадь области М3:
Условие 4. (принадлежности области М4):
внутри центральной окружности;
внутри
центральной нижней окружности;
внутри
левой нижней окружности;
внутри
левой окружности;
Площадь области М4:
Условие 5. (принадлежности области М5):
внутри центральной нижней окружности;
внутри
правой нижней окружности;
вне
центральной окружности;
вне
правой окружности.
Площадь области М5:
Блок-схема алгоритма решения:
Текст программы:
#include <iostream>
#include <math.h>
#include <locale.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
float x, y; //координаты точки
float s1, s2, s3, s4, s5; //площади рассматриваемых областей
int i = 0; //переключатель для switch
float pi = 3.14;
int r = 1;
cout << "Введите координаты точки:" << endl;
cin >> x >> y;
if (((x+1)*(x+1)+(y-1)*(y-1)<1) && ((x+1)*(x+1)+y*y>1)
&& (x*x+(y-1)*(y-1)>1))
{
cout << "Введенная точка находится в области М1." << endl;
i = 1;
}
else if ((x*x+y*y<1) && (x*x+(y-1)*(y-1)<1)
&& ((x-1)*(x-1)+(y-1)*(y-1)>1) && ((x+1)*(x+1)+y*y>1))
{
cout << "Введенная точка находится в области М2." << endl;
i = 2;
}
else if ((((x - 1) * (x - 1) + y * y) < 1) && (((x - 1) * (x - 1) + (y - 1) * (y - 1) > 1))
&& (x > 1) && (((x - 1) * (x - 1) + (y + 1) * (y + 1)) > 1))
{
cout << "Введенная точка находится в области М3." << endl;
i = 3;
}
else if ((x*x+y*y<1) && (x*x+(y+1)*(y+1)<1)
&& ((x+1)*(x+1)+(y+1)*(y+1)<1) && ((x+1)*(x+1)+y*y<1))
{
cout << "Введенная точка находится в области М4." << endl;
i = 4;
}
else if ((x*x+(y+1)*(y+1)<1)&&((x-1)*(x-1)+(y+1)*(y+1)<1)&&(x*x+y*y>1)&&((x-1)*(x-1)+y*y>1))
{
cout << "Введенная точка находится в области М5." << endl;
i = 5;
}
else
cout << "Введенная точка не входит ни в одну выделенную область." << endl;
switch (i)
{
case 1:cout << "s1 = " << (s1 = (3*pi*r*r)/4-(2*pi*r*r)/3+sqrt(3)/2) << endl;
break;
case 2:cout << "s2 = " << (s2 = sqrt(3)+(pi*r*r)/3-(pi*r*r)/2-sqrt(3)/2) << endl;
break;
case 3:cout << "s3 = " << (s3 = 2 * ((pi * r * r) / 4 - (pi * r * r) / 3 + (sqrt(3)) / 4)) << endl;
break;
case 4:cout << "s4 = " << (s4 = 1 + (4 * pi * r * r) / 3 - sqrt(3) - pi * r * r) << endl;
break;
case 5:cout << "s5 = " << (s5 = (2 * pi * r * r) / 3 - sqrt(3) / 2 + 1 - (pi * r * r) / 2) << endl;
break;
}
cout << "Чтобы ввести новые координаты, нажмите 1. Для выхода из программы нажмите 2." << endl;
cin >> i;
if (i == 1)
main();
system("pause");
return 0;
}
Контрольный пример выполнения программы: