Скачиваний:
15
Добавлен:
25.12.2018
Размер:
136.7 Кб
Скачать

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

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

«Санкт-Петербургский государственный университет аэрокосмического приборостроения»

КАФЕДРА № 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;

}

Примеры.

Соседние файлы в предмете Основы программирования и алгоритмизации