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

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

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

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

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

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

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Теплоенергетичний факультет Кафедра автоматизації проектування енергетичних процесів і систем РОЗРАХУНКОВО-ГРАФІЧНА РОБОТА з дисципліни «Програмування алгоритмічних структур» Тема «Програмування базових алгоритмів» Варіант № 21 Завдання 1.Розробити алгоритми і написати програми мовою Java із застосуванням операторів циклів for, while, do while для розв’язання завдань,поданих в додатках 1,2 відповідно до індивідуального варіанта. Варіант обрати за списком групи. 2.Розробити програмний проект в середовищі IntellijIDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками(наприклад, Excel, калькулятор, тощо). Завдання для варіанту 21 Завдання 1 Завдання 2 / Короткий опис розв`язання задач Перш за все я створила клас RgrTr15Chub, і виконувала в ньому обидва завдання. Організувала в ньому метод main, в якому задала початкову матрицю. Потім викликала метод task11, створила у ньому новий двовимірний масив, який отримує значення початкової матриці, і за допомогою циклу його було зведено до трикутного вигляду, що необхідно для розв`язання СЛАР методом Гауса. Наступним кроком був виклик методу task12 та створення циклу в ньому. В результаті його роботи обчислюються значення розв`язків СЛАР, які переходять у масив vectorResult, а він повертає їх у метод main. Метод task13 виводить початкову матрицю, трикутну матрицю, та результати обрахунків. Його було реалізовано 2 рази для вивиду одновимірного і двовимірного масиву. Потім для другого завдання я створила сканер щоб вводити дані, після цього – цикл, що виконує код 3 рази: дає можливість вводити кількості чисел , самі числа, а виводить початкові значення і результат. Далі я викликала метод task2, у ньому створила новий одновимірний масив. За допомогою циклу відбираються двозначні числа, які діляться на 5, а також закінчуються на 5. Потім ці значення передаються в новий масив і відбувається виведення результатів. Блок-схема / Результати / / / Код програми package com.company; import java.util.Scanner; public class RgrTr15Chub { public static void main(String[] args) { System.out.println("Task 1"); double[][] matrix = { {9, -9, 1, 2, 7, 23.5}, {3, 1, 7, -10, 1, 68.9}, {-9, 3, 9, -4, 0, -7.1}, {8, -5, 4, 6, 1, -14.1}, {10, -9, 9, 1, -10, -97.6} }; double[][] newMatrix = task11(matrix); double[] vectorResult = task12(newMatrix); System.out.println("Початкова матриця:"); task13(matrix); System.out.println("Трикутна матриця:"); task13(newMatrix); System.out.println("Вектор результатів:"); task13(vectorResult); System.out.printf("\nTask 2"); Scanner scan = new Scanner(System.in); for (int i = 0; i < 3; i++) { System.out.printf("\n"); int length = 0; while (length <= 0) { System.out.printf("\nУведіть кількість чисел для випадку%d: ", i + 1); length = scan.nextInt(); } int[] m = new int[length]; System.out.printf("Введіть\n"); for (int j = 0; j < length; j++) { System.out.printf("Число%d:", j + 1); m[j] = scan.nextInt(); } System.out.printf("\nПочатковий вивід:\t"); for (int j = 0; j < m.length; j++) System.out.printf("%d\t", m[j]); int[] result = task2(m); System.out.printf("\nРезультат:\t"); for (int j = 0; j < result.length; j++) System.out.printf("%d\t", result[j]); } } public static double[][] task11(double[][] matrix) { double[][] newMatrix = new double[5][6]; int i, j; for (i = 0; i < 5; i++) { j = 0; while (j < 6) { newMatrix[i][j] = matrix[i][j]; j++; } } for (int k = 0; k < 4; k++) { i = 1 + k; while (i < 5) { double t = (-1) * newMatrix[i][k] / newMatrix[k][k]; for (j = k; j < 6; j++) { newMatrix[i][j] = t * newMatrix[k][j] + newMatrix[i][j]; } i++; } } return newMatrix; } public static double[] task12(double[][] newMatrix) { double[] result = {0, 0, 0, 0, 0}; int i; for (i = result.length - 1; i >= 0; i--) { double sum = 0; for (int j = 0; j < result.length; j++) { sum = sum + newMatrix[i][j] * result[j]; } result[i] = (newMatrix[i][newMatrix.length] - sum) / newMatrix[i][i]; } return result; } static void task13(double[][] array) { int i, j; for (i = 0; i < 5; i++) { j = 0; while (j < 6) { if (array[i][j] % 1 == 0) { System.out.printf("%.0f \t", array[i][j]); } else { System.out.printf("%.2f\t", array[i][j]); } j++; } System.out.println(); } System.out.println(); } static void task13(double[] array) { int i; for (i = 0; i < 5; i++) { if (array[i] % 1 == 0) { System.out.printf("%.0f \t", array[i]); } else { System.out.printf("%.2f\t", array[i]); } } System.out.println(); } public static int[] task2 ( int[] array) { int[] copy = new int[array.length]; for (int i = 0; i < array.length; i++) copy[i] = array[i]; int amount = 0; for (int i = 0; i < array.length; i++) { if(array[i] % 5 == 0 && array[i] % 10 == 5 && array[i] >= 10 && array[i] < 100) { amount++; } else if(array[i] % 5 == 0 && array[i] / 10 == 5 && array[i] >= 10 && array[i] < 100) { amount++; } } int[] result = new int[amount]; amount = 0; for (int i = 0; i < array.length; i++) { if(array[i] % 5 == 0 && array[i] % 10 == 5 && array[i] >= 10 && array[i] < 100) { result[amount] = array[i]; amount++; } else if(array[i] % 5 == 0 && array[i] / 10 == 5 && array[i] >= 10 && array[i] < 100) { result[amount] = array[i]; amount++; } } return result; } } Висновки У результаті виконання роботи я дізналася як розробляти розгалуджені та циклічні алгоритми, написала програму, що визначає корені системи лінійних алгебраїчних рівнянь методом Гауса, а також в ній були використані умовний оператор if та оператори циклів for та while для знаходження двозначних чисел, що діляться націло на 5 та закінчуються на цифру 5.
Антиботан аватар за замовчуванням

23.05.2023 13:05-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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