выфвфы. Отчет по лабораторной работе 1 Вариант (указывается при наличии) 5 по дисциплине
Скачать 100.39 Kb.
|
Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования ИРКУТСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Институт информационных технологий и анализа данных наименование Название работы - РАЗВЕТВЛЯЮЩИЙСЯ ВЫЧИСЛИТЕЛЬНЫЙ ПРОЦЕСС Отчет по лабораторной работе № 1 Вариант (указывается при наличии) №5 по дисциплине Программирование наименование учебной дисциплины Выполнил Студент, номер группы (27.09.2021) Принял Должность (27.09.2021) Барлуков А.С. Группа: ЭВМб-22-2 Баталов Т.Э. Иркутск –2021 Лабораторная работаЗадача А. 1. Условие задачи Определите, пересекаются ли парабола у=cx2+dx+f и прямая y=ax+b. Если пересекаются, то определите, в каких точках. 2. Математическая модель Используем следующие математические положения и формулы: 1. . Если коэффициент b=0 то рассчет по этой формуле: X1=√(b-f); X2=-√(b-f) 2. Если дискриминант меньше нуля, то корней нет. ((d-a)*(d-a)-4*a*(f-b))<0 3. Если коэффициент c равен нулю, то параболы не существует. 4. Если дискриминант равен нулю, то корень один. ((d-a)*(d-a)-4*a*(f-b))==0 5. Если дискриминант больше нуля, то корня два. ((d-a)*(d-a)-4*a*(f-b)) > 0 3. Таблица 1 – Внешние спецификации
Таблица сообщений C1: «Не существует параболы» C2.1: «Пересекаются» C2.2: «Не пересекаются» C3.1: «Одна точка пересечения» C3.2: «Две точки пересечения» С4.1: «Координата первой точки» С4.2: «Координата второй точки» С4.3: «Координата точки» 4.Алгоритмизация Блок-схема алгоритма представлена на рис. 1. Рис.1. Блок-схема алгоритма 5. Проектирование тестов Таблица 2 – Таблица тестов
6. Проверка правильности алгоритма с помощью таблицы Тест 1: блоки 1,2,3,4,16 Тест 2: блоки 1,2,3,5,6,16 Тест 3: блоки 1,2,3,5,7,8,9,10,11,16 Тест 4: блоки 1,2,3,5,7,8,12,13,14,15,16 7. Кодирование алгоритма или запись алгоритма на языке С++ #include #include using namespace std; int main() { setlocale(LC_ALL, "Russian"); float c, d, f, a, b; float X1, X2, Y1, Y2; cout << "Введите координаты графиков" << endl; cin >> c >> d >> f >> a >> b; //проверим существование параболы cout << a << endl; if (c == 0) cout << "Парабола не существует" << endl; else { // проверим пересечение графиков if (((d - a) * (d - a) - 4 * a * (f - b)) < 0) cout << "Графики не пересекаются" << endl; else { // Узнаем количество точек и их координаты if (((d - a) * (d - a) - 4 * a * (f - b)) == 0) { if ((d == 0) && (a == 0)) { X1 = sqrt(b - f); X2 = -sqrt(b - f); if ((abs(X1) == 0) && (abs(X2) == 0)) { cout << "Одна точка" << endl; Y1 = c * X1 * X1 + d * X1 + f; cout << "Координата точки " << X1 << Y1 << endl; } else { cout << "Две точки" << endl; Y2 = c * X2 * X2 + d * X2 + f; Y1 = c * X1 * X1 + d * X1 + f; cout << "Координата первой точки {" << X1 << " " << Y1 << "}" << endl; cout << "Координата второй точки {" << X2 << " " << Y2 << "}" << endl; } } else { cout << "Одна точка" << endl; X1 = (-1 * (d - a)) / (2 * c); Y1 = c * X1 * X1 + d * X1 + f; cout << "Координата точки {" << X1 << " " << Y1 << "}" << endl; } } else { cout << "Две точки 2" << endl; X1 = (-1 * (d - a) - sqrt((d - a) * (d - a) - 4 * a * (f - b))) / 2; X2 = (-1 * (d - a) + sqrt((d - a) * (d - a) - 4 * a * (f - b))) / 2; Y1 = c * X1 * X1 + d * X1 + f; Y2 = c * X2 * X2 + d * X2 + f; cout << "Координата первой точки {" << X1 << " " << Y1 << "}" << endl; cout << "Координата второй точки {" << X2 << " " << Y2 << "}" << endl; } } } return 0; } Задача В. Условие задачи Заданы действительные числа X и Y. Определить, принадлежит ли точка с координатами (X,Y) заштрихованной части плоскости.(см. рис. 1) Рисунок 1-Д \ 2. Математическая модель Используем следующие математические положения и формулы: 1. Точка должна быть ниже прямой y = -2x+1 2. Точка должна быть ниже прямой y = 2x+1 3. Точка должна быть выше прямой y = 2x-1 4. Точка должна быть выше прямой y = -2x-1 3.Таблица 1 – Внешние спецификации
Таблица сообщений C1.1: “Точка входит в фигуру” C1.2: “Точка не входит в фигуру” 4.Алгоритмизация Блок-схема алгоритма представлена на рис. 3. Рисунок 3 – Блок-схема алгоритма 5. Проектирование тестов Таблица 2 – Таблица тестов
6. Проверка правильности алгоритма с помощью таблицы Тест 1: блоки 1,2,(3 || 4 || 5 || 6),8,9 Тест 2: блоки 1,2,3,4,5,6,7,9 7. Кодирование алгоритма или запись алгоритма на языке С++ #include #include using namespace std; int main() { setlocale(LC_ALL, "Russian"); float x, y; cout << "Введи координаты" << endl; cin >> x >> y; if ((y > 1) || (y < -1) || (x > 0.5) || (x < -0.5)) { cout << "Точка за пределами фигуры" << endl; } else { if (((-2 * x + y) >= -1 && ((-2 * x + y) <= 1))) { cout << "1" << endl; } if (((2 * x + y) >= -1) && ((2 * x + y) <= 1)) { cout << "2" << endl; } if (((2 * x - y) >= -1) && ((2 * x - y) <= 1)) { cout << "3" << endl; } if (((-2 * x - y) >= -1) && ((-2 * x - y) <= 1)) { cout << "Точка в фигуре" << endl; } else { cout << "Точка не входит в фигуру" << endl; } else { cout << "Точка не входит в фигуру" << endl; } else { cout << "Точка не входит в фигуру" << endl; } else { cout << "Точка не входит в фигуру" << endl; } return 0; } Задача С. 1. Условие задачи Единицы массы пронумерованы следующим образом: 1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер. Дан номер единицы массы (целое число в диапазоне 1–5) и масса тела в этих единицах (вещественное число). Найти массу тела в килограммах. Введем следующие обозначения: X - вводное число, e – значение для перевода, r – результат. 2. Математическая модель Используем следующие математические положения и формулы: 1кг = 100000мг 2. 1кг = 1000г 3. 1кг = 0,001т 4. 1кг = 0,01ц 3. Таблица 1 – Внешние спецификации
Таблица сообщений C1: “Число не входит в диапазон” C2: “Результат в кг” C3.1: “Масса дана в кг” С3.2: “Переводимое число отрицательно” С3.3: “Переводимое число равно 0” 4.Алгоритмизация Блок-схема алгоритма представлена на рис. 2. Рисунок 2 – Блок-схема алгоритма 5. Проектирование тестов Таблица 2 – Таблица тестов
6. Проверка правильности алгоритма с помощью таблицы Тест 1: блоки 1,2,3,5,12,14 Тест 2: блоки 1,2,3,4,5,6,11,14 Тест 3: блоки 1,2,3,12,14 Тест 4: блоки 1,2,3,4,13,14 Тест 5: блоки 1,2,3,4,5,(7,8,9,10),11,14 7. Кодирование алгоритма или запись алгоритма на языке С++ #include #include using namespace std; int main() { setlocale(LC_ALL, "Russian"); int X; float e,r; cout << "Введи единицу перевода (массы)" << endl; cin >> X; cout << "Введи число (массу) для перевода" << endl; cin >> e; if (e == 0) cout<< "Переводимое число равно 0" << endl; if (e<0) cout<< "Переводимое число отрицательно" << endl; switch (X) { case 1 : cout<< "Масса дана в кг = " << e << endl; break; case 2 : r=e*100000; cout<<"результат = "< break; case 3 : r=e*1000; cout<<"результат = "< break; case 4 : r=e*0.001; cout<<"результат = "< break; case 5 : r=e*0.01; cout<<"результат = "< break; default : cout<<"Число не входит в диапазон"<< endl; } return 0; } |