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

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

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

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

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

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

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Теплоенергетичний факультет Кафедра автоматизації проектування енергетичних процесів і систем РОЗРАХУНКОВО-ГРАФІЧНА РОБОТА з дисципліни «Програмування алгоритмічних структур» Тема «Програмування базових алгоритмів» Варіант № 14 Завдання на РГР: 1. Розробити алгоритми і написати програми мовою Java із застосуванням операторів циклів for, while, do while для розв’язання завдань, поданих в додатках 1, 2 відповідно до індивідуального варіанта. Варіант обрати за списком групи. 2. Розробити програмний проект в середовищі Intellij IDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками (наприклад, Excel, калькулятор, тощо). 3. Оформити РГР та вчасно надіслати викладачу на перевірку файл РГР та файл програми. Завдання 1: Завдання 2: Короткий опис рішення завдання: Завдання 1: У методі main організувала введення даних за допомогою присвоєння. Потім передала матрицю в метод task11, де за допомогою циклів while та for звела її до трикутникового вигляду. У методі task12 створила новий масив з результатами, тобто з коренями рівняння, які обчислюю за допомогою циклів while та for. Повертаю ці результати через оператор return. У методах task13 просто здійснюю вивід матриць: спочатку заданої розширеної матриці та матриці трикутникового вигляду(у методі main викликаю task13(a) та task13(triangular)), а потім масив вектору результатів (у методі main викликаю task13(res)). Через це вдалось зменшити й спростити код та викликати метод task13 лише 2 рази. Завдання 2: У методі main прошу ввести натуральне число за допомогою методів класу Scanner. У методі task2 перевіряю чи число натуральне, і якщо це так, то знаходжу кількість його дільників, залишаю лише дільники, які є парними. У методі main здійснюю форматований вивід відповіді, викликаючи метод task2. Виконую ввід та вивід для трьох наборів даних. Блок-схема алгоритму для 2 завдання Програма проекту package com.company; import java.util.Scanner; public class RgrTr15Tkho { public static void main(String[] args) { System.out.printf("----------Task1----------\n"); double[][] a = { {10, -9, -2, -9, -2, 101.4}, {-8, 10, 7, 7, 1, -127.7}, {-10, 10, 0, 4, -8, -87}, {1, -10, -6, 2, 7, 102.9}, {-7, 7, -10, -5, -9, -20.9} }; double[][] triangular = task11(a); double[] res = task12(triangular); System.out.printf("Початкова матриця: \n"); task13(a); System.out.printf("Трикутникова матриця: \n"); task13(triangular); System.out.printf("Вектор результатів: \n"); task13(res); System.out.printf("----------Task2----------\n"); Scanner scan = new Scanner(System.in); for(int l=0;l<3;l++){ System.out.printf("Введіть натуральне число: \n"); double n = scan.nextDouble(); System.out.printf("\n%d\n", task2(n)); } } static double[][] task11(double[][] a) { double[][] arr = new double[a.length][a[0].length]; int n = 0; while (n < a.length) { for (int j = 0; j < a[n].length; j++) arr[n][j] = a[n][j]; n++; } double m; int b = 0; while (b < arr.length - 1) { for (int i = b + 1; i < arr.length; i++) { m = arr[i][b] / arr[b][b]; for (int j = b; j < arr[i].length; j++) arr[i][j] -= arr[b][j] * m; } b++; } return arr; } static double[] task12(double[][] arr) { double[] res = new double[arr.length]; int i = arr.length - 1; while (i >= 0) { double sum = 0; for (int j = 0; j < arr[0].length - 1; j++) sum += arr[i][j] * res[j]; res[i] = (arr[i][arr.length] - sum) / arr[i][i]; i--; } return res; } static void task13(double[][] arr) { for (int i = 0; i < arr.length; i++) { System.out.printf("|"); for (int j = 0; j < arr[i].length; j++){ if(arr[i][j] % 1 == 0) System.out.printf("\t%4.0f", arr[i][j]); else System.out.printf("\t%.3f", arr[i][j]); } System.out.printf("\t|\n"); } } static void task13(double[] arr) { System.out.printf("|"); for (int i = 0; i < arr.length; i++) System.out.printf("\t%.1f", arr[i]); System.out.printf("\t|\n"); } static Object task2(double n){ int k, j, i=0; if(n>0 && n%1==0) { for(k=1;k<=n;k++){ if(n%k==0) { if (k % 2 == 0) i++; } } } else System.out.printf("Ви ввели не натуральне число.\n"); return i; } } Результати обчислень: Висновки: Під час виконання лабораторної роботи №3 ми розробили програму, яка обчислює систему алгебраїчних рівнянь, дані взяті за варіантом. Були відпрацьовані навички використання операторів циклів for, while, do while для розв’язання завдань. Друге завдання також було обране за варіантом, всі обчислення перевірені альтернативним способом (калькулятор). Звіт оформлено згідно з вимогами й вчасно надісланий викладачу.
Антиботан аватар за замовчуванням

05.07.2023 22:07-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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