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

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

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

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

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

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

Додаток 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:00

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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