Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы / Laba_varik12_7

.2.pdf
Скачиваний:
9
Добавлен:
10.06.2023
Размер:
1.06 Mб
Скачать

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

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

«Московский технический университет связи и информатики»

Кафедра «Информатика»

Лабораторная работа №7 – Проект 2

«Разработка проекта, решающего задачу вычисления сложного выражения с условием и выбора наименьшего (наибольшего) из нескольких значений»

по теме:

«Логические данные и выражения. Операторы разветвления VC++. Программная реализация базовых разветвляющихся структур и типовых алгоритмов»

по дисциплине «Информатика»

Выполнил: студент гр. БИН2104 Книгин Е.А. Вариант №12

Проверил:

Москва, 2021 г.

СОДЕРЖАНИЕ

1)ЦЕЛЬ РАБОТЫ

2)ФОРМУЛИРОВКА ЗАДАЧИ №12

3)ФОРМАЛИЗАЦИЯ ЗАДАНИЯ

4)РАЗРАБОТКА АЛГОРИТМОВ РЕШЕНИЯ ЗАДАЧИ

5)РАЗРАБОТКА ПРОГРАММНОГО КОДА ПРОЕКТА

6)РЕЗУЛЬТАТЫ ВЫПОЛНЕНИЯ ПРОГРАММЫ

7)ДОКАЗАТЕЛЬСТВО ПРАВИЛЬНОСТИ РАБОТЫ ПРОГРАММЫ

1

ЦЕЛЬ РАБОТЫ

1)Разработать и написать консольный проект, содержащий два алгоритма, которые вычисляют выражение. Первый с помощью базовых алгоритмов нахождения минимального и максимального, а второй с помощью вспомогательных функций.

2)Оформить отчет по работе.

ФОРМУЛИРОВКА ЗАДАЧИ №12

Рисунок 1 – формулировка задачи №12

ФОРМАЛИЗАЦИЯ ЗАДАНИЯ

Чтобы решить данную задачу требуется написать два алгоритма, отличающихся тем, что один из них будет использовать базовые алгоритмы нахождения максимума и минимума, а другой для этой задачи будет использовать созданные нами функции max и min, которые значительно упрощают запись кода. Для переменных, вводимых пользователем, а также выдающих результат, будем использовать тип double.

2

РАЗРАБОТКА АЛГОРИТМОВ РЕШЕНИЯ ЗАДАЧИ

Первый алгоритм – алгоритм решения задачи, использующий вложенные разветвления с базовыми алгоритмами нахождения наибольшего и наименьшего значений без использования библиотечных функций. (см. рис. 2)

Рисунок 2 – схема алгоритма logic

Для второго алгоритма решения задачи потребуются библиотечные функции нахождения минимального и

максимального значения. (см. рис. 3)

3

Рисунок 3 – алгоритмы для нахождения максимума и минимума

Второй алгоритм - алгоритм, использующий для решения задачи заданные нами библиотечные функции, находящие наибольшее и наименьшее значения. (см. рис. 4)

Рисунок 4 – схема алгоритма logic1

Для основной функции мы будем использовать оператор switch для выбора пользователем варианта алгоритма решения. (см. рис. 5)

4

Рисунок 5 – схема главной процедуры main

РАЗРАБОТКА ПРОГРАММНОГО КОДА ПРОЕКТА

Напишем код для библиотеки “minmax.h” с двумя функциями. (см. рис. 6)

1.#pragma once

2.double min(double x, double y)

3.{

4.double f;

5.if (x > y) f = y;

6.else f = x;

7.return f;

8.}

9.double max(double x, double y)

10.{

11.double f;

12.if (x > y) f = x;

13.else f = y;

14.return f;

15.}

Рисунок 6 – код библиотеки “minmax.h”

5

Теперь напишем код главной функции main и в отдельный файл код функций Input и Output. (см. рис. 7, 8)

1.#include <iostream>

2.#include "inpoutp.h"

3.#include "logic.h"

4.#include "minmax.h"

6.using namespace std;

7.void main(void)

8.{

9.double x, y, a, b, p;

10.int s, c;

11.Input(x, y, a, b);

12.cout << "Каким способом решать задачу?\n";

13.cout << "1 - с вложенными разветвлениями";

14.cout << " без дополнительных функций max min\n";

15.cout << "2 - со своими фунцкиями max и min\n" << "Способ - ";

16.cin >> c;

17.switch (c)

18.{

19.case 1:

20.p = logic(x, y, a, b, s);

21.break;

22.case 2:

23.p = logic1(x, y, a, b, s);

24.break;

25.default:

26.cout << "Такого способа решения нет!";

27.break;

28.}

29.Output(p, s);

30.}

Рисунок 7 – код файла с исходным кодом “lab7.2.cpp”

1.#pragma once

2.#include <iostream>

4.using namespace std;

5.void Input(double& x, double& y, double& a, double& b)

6.{

7.setlocale(LC_ALL, "rus");

8.cout << "Введите пременную x = ";

9.cin >> x;

10.cout << "\nВведите пременную y = ";

11.cin >> y;

12.cout << "\nВведите пременную a = ";

13.cin >> a;

14.cout << "\nВведите пременную b = ";

15.cin >> b;

16.}

17.void Output(double p, int& s)

18.{

19.setlocale(LC_ALL, "rus");

20.cout << "Ответ = " << p << endl;

21.cout << "Номер ветки разветвления - " << s;

22.}

Рисунок 8 – код библиотеки “inpoutp.h”

6

И наконец, в библиотеку под названием “logic.h” напишем программный код функций logic и logic1, выполняющих все логические операции и вычисления. (см. рис. 9, 10)

1.double logic(double x, double y, double a, double b, int& s)

2.{

3.double p;

4.if (x > 0)

5.{

6.if (x < y)

7.p = y;

8.else

9.p = x;

10.s = 1;

11.}

12.else

13.if (((-1 < x) && (x < 0)) || (x == -1) || (x == 0))

14.{

15.if (x > b)

16.

p = b;

17.else

18.

p = x;

19.s = 2;

20.}

21.else

22.if (pow(x, 2) > (a + b))

23.{

24.

if (pow(x,2) < sin(a)) && (pow(x,2) < cos(b))

25.

p = pow(x, 2);

26.

else

27.

 

28.

if (pow(x,2) > sin(a)) && (sin(a) < cos(b))

29.

p = sin(a);

30.

else

31.

p = cos(b);

32.

s = 3;

33.}

34.else

35.{

36.

if (((a + b) < sin(a)) && ((a + b) < cos(b)))

37.

p = (a + b);

38.

else

39.

if ((a+b) > sin(a)) && (sin(a) < cos(b))

40.

p = sin(a);

41.

else

42.

p = cos(b);

43.

s = 3;

44.}

45.return p;

46.}

Рисунок 9 – код функции logic

7

1.double logic1(double x, double y, double a, double b, int& s)

2.{

3.double p;

4.if (x > 0)

5.{

6.p = max(x, y);

7.s = 1;

8.}

9.else

10.if (((-1 < x) && (x < 0)) || (x == -1) || (x == 0))

11.{

12.p = min(x, b);

13.s = 2;

14.}

15.else

16.{

17.p = min(min(max(pow(x, 2), (a + b)), sin(a)), cos(b));

18.s = 3;

19.}

20.return p;

21.}

Рисунок 10 – код функции logic1

РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ ПРОГРАММЫ

Возьмем дважды четыре числа. Пусть для 1 способа решения переменные будут такие: x1 = 5.5; y1 = 8.1; a1 = 8; b1 = 12.

Тогда результат будет такой – (см. рис. 11)

Рисунок 11 – результат работы программы при использовании 1- го способа решения задачи

8

Пусть для 2-го способа решения переменные будут такие: x2 = -0.5; y2 = 8.5; a2 = -3; b2 = 3.

Тогда результат будет такой – (см. рис. 12)

Рисунок 12 – результат работы программы при использовании 2- го способа решения задачи

ДОКАЗАТЕЛЬСТВО ПРАВИЛЬНОСТИ РАБОТЫ ПРОГРАММЫ

Таблица 1 – доказательство правильности работы программы

x

y

a

b

Номер ветки

Ответ

1

5.5

8.1

8

12

1

8.1

2

-0.5

8.5

-3

3

2

-0.5

3

-8

-7

0

5

2

0

При тестовых данных результаты ручного расчета и вычисления компьютера совпадают.

9

Соседние файлы в папке лабы