Програмування розгалужених алгоритмів

Інформація про навчальний заклад

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2021
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування алгоритмічних структур

Частина тексту файла (без зображень, графіків і формул):

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Теплоенергетичний факультет Кафедра автоматизації проектування енергетичних процесів і систем ЗВІТ з лабораторної роботи № 2 з дисципліни «Програмування алгоритмічних структур» Тема «Програмування розгалужених алгоритмів» Варіант №7 Завдання на лабораторну роботу 1. Розробити блок-схеми алгоритмів і написати програми мовою Java із застосуванням умовного оператора if та оператора вибору switch для розв’язання завдань, поданих в табл. 1 – 4 відповідно до індивідуального варіанта. Варіант обрати за списком групи. 2. Розробити програмні проекти в середовищі Intellij IDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками (наприклад, Excel, калькулятор, тощо). 3. Зробити Звіт з лабораторної роботи та вчасно надіслати викладачу на перевірку. Завдання 1: / Завдання 2: / Завдання 3: / Завдання 4: / Опис рішення завдання Для першого та другого завдання було створено окремий файл LR21.java, в якому було реалізовано 3 методи: main, task1, task2. В методі task1 було введено значення a, b та обраховано значення z. Потім використовуючи if, else було створено функції для обрахування значення y, в залежності від значення х. Також було використано бібліотеку java.lang.Math.*. Це дозволило більш зручно використовувати математичні функції, такі як tan(), abs(), pow(), cos(), sin(), sqrt(), log(). В методі task2 було використано оператор switch, завдяки якій було реалізовано 3 варіанти набору значень a, b, c. Потім використовуючи if, else було створено функції для обрахування значення y, в залежності від значення х та набору значень a, b, c. Було використано математичні функції, які були написані в попередньому абзаці. В методі main було введено значення для х1, х2 та х3. Потім було виведено результати завдання 1(3 результати, які були обраховані в залежності від трьох значень х). Нижче виведення результатів завдання 2(9 результатів, які залежать від значень трьох х та трьох наборів значень a, b, c). Вивід було реалізовано завдяки printf(). Це функція форматованого виводу. Завдяки “%4f” виводятся числа тільки з 4 знаками після коми. Для третього та четвертого завдання було створено окремий файл LR22.java, в якому було реалізовано 3 методи: main, task3, task4. В методі task3 перевіряється трикутник на те, чи є він прямокутним. Перевірено було завдяки наслідку з теореми Піфагора (якщо квадрат найбільшої сторони трикутника дорівнює сумі квадратів інших сторін, то трикутник є прямокутним). Цей метод належить до типу Boolean. В методі task4 спочатку створено змінні x0, y0, x1, y1, а потім задано набори цих значень завдяки оператору switch. Потім було визначено яка точка менш віддалена від точки О. Так як точка О має координати (0,0), то для того щоб визначити яка точка менш віддалена від О потрібно знайти суму квадратів координат першої точки та суму квадратів координат другої точки, а потім визначити у якої точки менше число. В залежності від результатів виводяться різні значення завдяки оператору if. В методі main присвоюються значення для a,b,c, які користувач вводе з клавіатури(зроблено це завдяки java.util.Scanner). Потім в залежності від результатів масиву task3 виводиться відповідь. Це все повторюється ще два рази для інших значень a,b,c. Нижче викликається метод task4. Блок-схема для завдання 4 / Код програми LR21 import static java.lang.Math.*; public class LR21 { public static void main(String[] args) { double x1=-2.3, x2=0.6, x3=4.8; System.out.println("------------Task 1------------"); System.out.println("Початкові дані: a=1.5, b=0.7"); System.out.printf("x1=-2.3 ---> y=%.4f\n", task1(x1)); System.out.printf("x2=0.6 ---> y=%.4f\n", task1(x2)); System.out.printf("x3=4.8 ---> y=%.4f\n", task1(x3)); System.out.println("------------Task 2------------"); System.out.println("Case 1 (a=3.2, b=-0.7, c=2.2):"); System.out.printf("x1=-2.3 ---> y=%.4f\n", task2(x1,1)); System.out.printf("x2=0.6 ---> y=%.4f\n", task2(x2,2)); System.out.printf("x3=4.8 ---> y=%.4f\n", task2(x3,3)); System.out.println("Case 2 (a=10.5, b=-2.5, c=5.6):"); System.out.printf("x1=-2.3 ---> y=%.4f\n", task2(x1,1)); System.out.printf("x2=0.6 ---> y=%.4f\n", task2(x2,2)); System.out.printf("x3=4.8 ---> y=%.4f\n", task2(x3,3)); System.out.println("Case 3 (a=5.4, b=3, c=2.6):"); System.out.printf("x1=-2.3 ---> y=%.4f\n", task2(x1,1)); System.out.printf("x2=0.6 ---> y=%.4f\n", task2(x2,2)); System.out.printf("x3=4.8 ---> y=%.4f\n", task2(x3,3)); } public static double task1(double x){ double a=1.5, b=0.7,y = 0, z=tan(abs(tan(b*x))); if(x<=a) { y=a*pow(cos(x),2)+b*pow(sin(z*x),2); } else if(a<x & x<=4.5*b) { y=a*tan(pow(sin(b*x),2)+z); } else if(x>4.5*b) { y=log(a*x-b)+pow(z,2); } return y; } static double task2(double x, int num){ double a, b, c, y; switch (num) { case 1: a=3.2; b=-0.7; c=2.2; break; case 2: a=10.5; b=-2.5; c=5.6; break; case 3: a=5.4; b=3; c=2.6; break; default: a=0; b=0; c=0; break; } if(abs(1-pow(x, 2)) == a+c) { y=x*pow(E,a)+pow(E,abs(b*c)); } else if(abs(1-pow(x,2))>(a+c)){ y=pow(sin(a*x),2)+cos(b*c); } else { y=sqrt(a*pow(b,4)+pow(c*pow(x,2),(1/5))); } return y; } } Код програми LR22 import static java.lang.Math.*; import java.util.Scanner; public class LR22 { public static void main(String[] args) { System.out.println("------------Task 3------------"); Scanner input = new Scanner(System.in); System.out.print("Enter a: ");//набір вхідних данних 1 double a = input.nextDouble(); System.out.print("Enter b: "); double b = input.nextDouble(); System.out.print("Enter c: "); double c = input.nextDouble(); if(task3(a,b,c)) { //Вивід результату 1 System.out.printf("Result is %b%n", task3(a,b,c)); System.out.println("Трикутник зі сторонами " + a + ", " + b + ", " + c + " є прямокутним"); } else { System.out.printf("Result is %b%n", task3(a,b,c)); System.out.println("Трикутник зі сторонами " + a + ", " + b + ", " + c + " не є прямокутним"); } System.out.println(); System.out.print("Enter a: ");//набір вхідних данних 2 a = input.nextDouble(); System.out.print("Enter b: "); b = input.nextDouble(); System.out.print("Enter c: "); c = input.nextDouble(); if(task3(a,b,c)) { //Вивід результату 2 System.out.printf("Result is %b%n", task3(a,b,c)); System.out.println("Трикутник зі сторонами " + a + ", " + b + ", " + c + " є прямокутним"); } else { System.out.printf("Result is %b%n", task3(a,b,c)); System.out.println("Трикутник зі сторонами " + a + ", " + b + ", " + c + " не є прямокутним"); } System.out.println(); System.out.print("Enter a: ");//набір вхідних данних 3 a = input.nextDouble(); System.out.print("Enter b: "); b = input.nextDouble(); System.out.print("Enter c: "); c = input.nextDouble(); if(task3(a,b,c)) { //Вивід результату 3 System.out.printf("Result is %b%n", task3(a,b,c)); System.out.println("Трикутник зі сторонами " + a + ", " + b + ", " + c + " є прямокутним"); } else { System.out.printf("Result is %b%n", task3(a,b,c)); System.out.println("Трикутник зі сторонами " + a + ", " + b + ", " + c + " не є прямокутним"); } System.out.println(); System.out.println(); System.out.println(); System.out.println("------------Task 4------------"); task4(1); task4(2); task4(3); } static boolean task3(double a, double b, double c){ if(((pow(a, 2) == pow(b, 2) + pow(c, 2)) | (pow(b,2)==pow(a,2)+pow(c,2)) | (pow(c,2)==pow(a,2)+pow(b,2))) & (a>0) & (b>0) & (c>0) ){ return true; } else return false; } static void task4(int num){ double x0, y0, x1, y1; switch (num) { case 1: x0=2; y0=2; x1=-4; y1=0; break; case 2: x0=8; y0=9; x1=12; y1=1; break; case 3: x0=-3; y0=0.9; x1=2; y1=3; break; default: x0=0; y0=0; x1=0; y1=0; break; } if((pow(x0,2)+pow(y0,2)) > (pow(x1,2)+pow(y1,2))){ //так як точка О має координати (0;0), то ця рівність є достатньою умовою для визнаення віддстані до точки О(0;0) System.out.println("Точка В("+x1+";"+y1+") менш віддалена від точки O(0;0)."); } else { if ((pow(x0,2)+pow(y0,2)) < (pow(x1,2)+pow(y1,2))){ System.out.println("Точка A("+x0+";"+y0+") менш віддалена від точки O(0;0)."); } else { System.out.println("Точка O(0;0) рівновіддалена від точок A("+x0+";"+y0+") та В("+x1+";"+y1+")."); } } } } Результат програми / / Висновок: Я створив дві програми, в яких було використано декілька методів, різні способи присвоєння значень змінним. В програмах виконано 4 завдання. Було використано умовний оператор if, оператор switch, форматований вивід printf, математичні функції. Створив блок-схему для завдання 4.
Антиботан аватар за замовчуванням

24.05.2023 18:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!