Лабораторная работа №7 – Проект №2 «Разработка проекта, решающего задачу вычисления сложного выражения с условием и выбора наиме. Реферат 7.2 (Троян). Логические данные и выражения. Операторы разветвления vс. Программная реализация базовых разветвляющиеся структур и типовых алгоритмов по дисциплине
Скачать 357.17 Kb.
|
МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования «Московский технический университет связи и информатики» Кафедра «Информатика» Лабораторная работа №7 – Проект №2 «Разработка проекта, решающего задачу вычисления сложного выражения с условием и выбора наименьшего (наибольшего) из нескольких значений» по теме «Логические данные и выражения. Операторы разветвления VС++. Программная реализация базовых разветвляющиеся структур и типовых алгоритмов» по дисциплине «Информатика» Выполнил: студент гр. БИН2103 Троян Иван Вариант №23 Проверил: Москва, 2021 г. СОДЕРЖАНИЕ СОДЕРЖАНИЕ 2 1. ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ 3 2. ФОРМАЛИЗАЦИЯ РЕШЕНИЯ 3 3. РАЗРАБОТКА ДВУХ ФУНКЦИОНАЛЬНЫХ АЛГОРИТМОВ И АЛГОРИТМА ГЛАВНОЙ ФУНКЦИИ MAIN 4 4.КОД ПРОГРАММЫ 7 5. РЕЗУЛЬТАТЫ 10 1. ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ 3 2. ФОРМАЛИЗАЦИЯ РЕШЕНИЯ 3 3. РАЗРАБОТКА ДВУХ ФУНКЦИОНАЛЬНЫХ АЛГОРИТМОВ И АЛГОРИТМА ГЛАВНОЙ ФУНКЦИИ MAIN 4 4.КОД ПРОГРАММЫ 6 5. РЕЗУЛЬТАТЫ 10 1. ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ v= 2. ФОРМАЛИЗАЦИЯ РЕШЕНИЯ Алгоритм решения данной задачи представляет собой комбинацию вычисления сложного выражения с условием и выбора (наименьшего, наибольшего) из нескольких значений, используя все виды разветвлений. Можно решить эту задачу двумя способами: Создать функциональный алгоритм и соответствующую программную функцию, используя вложенные разветвления с базовыми алгоритмами нахождения наибольшего и наименьшего значений без использования библиотечных функций max и min; Создать функциональный алгоритм и соответствующую программную функцию, используя вложенные разветвления и разработанные алгоритмы, и программные функции нахождения наибольшего и наименьшего из двух значений. Будем считать, что исходные данные и результат вычислений имеют тип double. Для контроля правильности результата создадим переменную целого типа, этой переменной будем присваивать номер ветви разветвления, по которой выполнились вычисления. 3. РАЗРАБОТКА ДВУХ ФУНКЦИОНАЛЬНЫХ АЛГОРИТМОВ И АЛГОРИТМА ГЛАВНОЙ ФУНКЦИИ MAIN Рисунок 1 - Схема алгоритма Razv Рисунок 2 - Схема алгоритма Razm Рисунок 3 - Схема алгоритма main 4.КОД ПРОГРАММЫ Main.cpp #include #include using namespace std; void Get(double& x, double& y, double& z, double& c,); void Put(double , int); double Razv(double x, double y, double z, double c, int& n); double Razm(double x, double y, double z, double b, int& n); int main() { double x,y,z,c,v; int n; Get(x,y,z,c); int choice; cout<<"Каким способом решать задачу?\n"; cout<<"1 - с вложенными разветвлениями "; cout<<"без библиотечных функций max и min \n"; cout<<"2 - со своими функциями minMy и maxMy \n"; cout<<"Что выбираете 1 или 2 ?\n"; cin>>choice; switch(choice) { case 1: v = Razv(x,y,z,c,n); break; case 2: h = Razm(x,y,z,c,n); break; default: cout<<" Вы ввели что-то не то! "; cout< system("PAUSE"); return 0; } Put(v,n); system("PAUSE"); return 0; } Choice.cpp #include using namespace std; double Razv(double x, double y, double z, double c, int& n) { double v; if (z*y < 0)&& (x>0) { v = c* sqrt(x)*(y-z) n = 1; } else if (y*z<0)&& (x>0) { double v1=z,v2=y; v=x; if (v1>v) v = v1; if(v2>v) v = v2; v = 2; } else {double v1=x, v2=y*y; v=z; if (v1 if(v2 n = 3; } return v; } double maxMy(double z, double y); double minMy(double z, double y); double Razm(double x, double y, double z, double v, int& n) { if (pow(abs(x),y) < z) { n = 1; return c* sqrt(x)*(y-z)); } else if (y*z < 0 {n = 2; return maxMy(x, maxMy(y, z)); } else {n = 3; return minMy(pow(x), minMy(y*y); } } double maxMy(double x, double y) { double g; if (x > y) g = x; else g = y; return g; } double minMy(double x, double y) { double g; if (x < y) g = x; else g = y; return g; } GetPut.cpp #include using namespace std; void Get(double& x, double& y, double& z, double& c,) { setlocale(LC_ALL,"rus"); cout<<" Введите x, y, z\n"; cin>>x>>y>>z; cout<<" Введите c\n"; cin>>c; } void Put(double v, int n) { setlocale(LC_ALL,"rus"); cout<<" Вычислено значение сложной функции с условием "< cout<<" Номер ветки разветвления "< } 5. РЕЗУЛЬТАТЫ Рисунок 4 - Ветвь№1 Рисунок 5 - Ветвь№2 2 Рисунок 6 - Ветвь№3, если не получается 1 ветвь Рисунок 7 - Ветвь№3, если не получается 2 ветвь
|