Добавил:
t.me Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Чурилов / лаб 2

.docx
Скачиваний:
0
Добавлен:
14.10.2024
Размер:
205.42 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

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

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ

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

ОЦЕНКА

ПРЕПОДАВАТЕЛЬ

доцент _________________ Л.Н. Бариков

подпись, дата

ЛАБОРАТОРНАЯ РАБОТА №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;

}

Контрольный пример выполнения программы:

Соседние файлы в папке Чурилов