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

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

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

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

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

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

Додаток 2 Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Теплоенергетичний факультет Кафедра автоматизації проектування енергетичних процесів і систем ЗВІТ з лабораторної роботи № 2 з дисципліни «Програмування алгоритмічних структур» Тема «Програмування розгалужених алгоритмів» Варіант № 16 Мета роботи: набуття практичних навичок використання умовного опера-тораifта операторавиборуswitchпри створюванніпрограмних проектіврозгалуженої структури. Завдання на лабораторну роботу. Розробити блок-схеми алгоритмів і написати програми мовою Java із застосуванням умовного оператора if та оператора вибору switch для розв’язання завдань, поданих в табл.1–4 відповідно до індивідуального варіанта. Варіант обрати за списком групи. Розробити програмні проекти в середовищі Intellij IDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками (наприклад, Excel, калькулятор, тощо). Зробити Звіт з лабораторної роботи та вчасно надіслати викладачу на перевірку. Опис завдання табл. 1 для варіанта 16: / Опис завдання табл. 2: / Опис завдання табл. 3: /Опис завдання табл. 4: / Опис розв’язку завдання 1: Метод task1 повертає результат обчислень double. Усередені метода с початку я ввів данні згідно мого варіанту. Це константи a,b і z. Потім за допомогою розгалуження If я почав перевірювати константи з змінною згідно до варіанту. І залежно від цього виконувати умови завдання. В обчислюванні я використовував математичні функції, які визивав за допомогою Math… Було використано: Sin() – синус аргументу. Pow() – возведення у степінь. Cos() – косинус аргументу. Abs() – модуль функції. Math.E – статична константа. Число Ейлера. У кінці, після опрацювання методу, ми записуємо отримане значення у змінну task1. Опис розв’язку завдання 2: Метод task2 повертає так само результат обчислень double. Метод зчислює вхідну змінну double x та int index, який відвовідає за вибір потрібних наборів констант. Вибір набору констант здійснюється за допомогою розгалуження switch і параметру index. Потім аналогічно до першого завдання за допомогою розгалуження If я почав перевірювати константи з змінною згідно до варіанту. І залежно від цього виконувати умови завдання. В обчислюванні я використовував математичні функції, які визивав за допомогою Math… Було використано: Sin() – синус аргументу. Pow() – возведення у степінь. Ln() –натуральний логарифм. Cos() – косинус аргументу. Abs() – модуль функції. Math.E – статична константа. Число Ейлера. У кінці, після опрацювання методу, ми записуємо отримане значення у змінну task2. Код програми: package com.company; public class Lr21 { public static void main(String[] args) { //Ввід та присвоєння змінних double t1,t2; double[] x = {-2.3,0.6,4.8}; //Приссвоєння результатів й вивід результатів System.out.println("Завдання 1:");// Завдання 1 for (int i=0; i<3; i++){ t1= task1(x[i]); System.out.printf("\nX%d = %.2f\nTask1 = %.4f", i, x[i], t1); } System.out.println("\n\n\nЗавдання 2:");// Завдання 2 for (int j=0; j<3; j++){ System.out.printf("\n\nOption%d",j+1); for (int i=0; i<3; i++) { t2 = task2(x[i], j); System.out.printf("\nX%d = %.2f\nTask2 = %.4f", i, x[i], t2); } } } //Обчислювання завдання 1 public static double task1(double x) { double t,a,b,z; t=0; a = 0.7; b = -1.25; z = 3.5; if ( x < a ){ t = 2.8*Math.pow(Math.sin(a*x),2)-b*Math.pow(x,3)*z; } if ( a <= x && x <= Math.pow(b,2)){ t = z*Math.cos(Math.pow(a*x+b,2)); } if ( x > Math.pow(b,2) ){ t = Math.pow(Math.E,Math.abs(2.5*a*x))+z*a*b*x; } return t; } //Обчислювання завдання 2 public static double task2(double x, int index) { double t,a,b,z; t=0; a=0; b=0; z=0; switch (index){ case 0: a = 0.1;//Дані для першого випадку b = 0.5; z = Math.pow(Math.E,2.5*a*x); break; case 1: a = 1.2;//Дані для другого випадку b = 2.5; z = Math.pow(Math.E,2.5*a*x); break; case 2: a = 2.5;//Дані для третього випадку b = 1.2; z = Math.pow(Math.E,2.5*a*x); break; } if ( x < a ){ t = 3.5*Math.pow(Math.sin(Math.pow(b*x+z,3)),2); } if ( a <= x && x <= Math.pow(b,2.5)){ t = Math.log(a+x*Math.pow(b,3))+a; } if ( x > Math.pow(b,2.5) ){ t = Math.pow(Math.cos(Math.pow(a,b)+x*z),2)+Math.pow(a,2); } return t; } } Результати рішення програми: / / Опис розв’язку завдання 3: Метод task3 не повертає ніяких значень. Він бере значення double a,b,c, які було зчитувано у методі main за допомогою сканеру. Метод знаходить найменше серед цих значень и бере зміну як сторону до квадрату. Потім він знаходить значення площі квадрату та трикутника (зі сторонами a,b,c), та виводить на екран назву найбільшого, порівнявши їх у розгалуженні if…. Опис розв’язку завдання 4: Метод task4 також не повертає ніяких значень. Було узято аналогічну струкутру для обчислювання як у методі task3, та ініціалізації даних як у task2. Було взято значення double a,b,c, які ми обирали за допомогою switch. Метод так само знаходить найменше серед цих значень и бере зміну як сторону до квадрату. Потім він знаходить значення площі квадрату та трикутника (зі сторонами a,b,c), та виводить на екран назву найбільшого, порівнявши їх у розгалуженні if…. Блок-схема до завдання 4: / Код програми: package com.company; import java.util.Scanner; public class Lr22 { public static void main(String[] args) { double a = 0; double b = 0; double c = 0; Scanner in = new Scanner(System.in); System.out.println("Введіть a: "); a = in.nextDouble(); System.out.println("Введіть b: "); b = in.nextDouble(); System.out.println("Введіть c: "); c = in.nextDouble(); System.out.println("Результат опрацювання завдання 3:\n"); task3(a,b,c); System.out.println("\n Результат опрацбвання завдання 4:\n"); for (int i=0; i<3; i++){ System.out.printf("Варіація номер %d\n",i); task4(i); } } //Обчислювання завдання 3 static void task3(double a,double b, double c){ double min = Math.min(Math.min(a,b),c); double p=(a+b+c)/2; double Str = Math.sqrt(p*(p-a)*(p-b)*(p-c)); double Skv = Math.pow(min,2); if ( Str > Skv ){ System.out.println("Площа трикутника більша за площу квадрату"); } if ( Str < Skv ){ System.out.println("Площа квадрата більша за площу трикутника"); } if ( Str == Skv ){ System.out.println("Площі трикутника та квадрата рівні"); } } //Обчислювання завдання 4 static void task4(int index){ double a = 0; double b = 0; double c = 0; switch (index){ case 0: a = 3;//Дані для першого випадку b = 5; c = 4; break; case 1: a = 13;//Дані для другого випадку b = 8; c = 11; break; case 2: a = 10;//Дані для третього випадку b = 5; c = 12; break; } double min = Math.min(Math.min(a,b),c); double p=(a+b+c)/2; double Str = Math.sqrt(p*(p-a)*(p-b)*(p-c)); double Skv = Math.pow(min,2); if ( Str > Skv ){ System.out.println("Площа трикутника більша за площу квадрату"); } if ( Str < Skv ){ System.out.println("Площа квадрата більша за площу трикутника"); } if ( Str == Skv ){ System.out.println("Площі трикутника та квадрата рівні"); } } } Результати рішення програми: / Висновок: У цій лабораторній роботі було написано 4 методи, згідно до завдань, які були узяти х табл. 1-4 згідно мого варіанту. Я використовував розгалуження if.. та switch. Щільніше познайомився з пакетом Math, використовував Scanner та цикли for. Проект було створено у середовищі Intellij IDEA, де було створенно два класи Lr21 та Lr22, згідно до задач на лабораторну. Було розроблено блок-схему до 4 завдання. Усі розрахунки було перевірено за допомогою калькулятора, помилок не було знайдено. Зроблено звіт з лабораторної роботи та вчасно надіслано викладачу на перевірку.
Антиботан аватар за замовчуванням

07.06.2023 19:06-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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