DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

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

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

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Теплоенергетичний факультет Кафедра автоматизації проектування енергетичних процесів і систем РОЗРАХУНКОВО-ГРАФІЧНА РОБОТА з дисципліни «Програмування алгоритмічних структур» Тема «Програмування базових алгоритмів» Варіант № 25 Мета роботи: Набуття практичних навичок розробки розгалужених та циклічних алгоритмів при створюванні програмних проектів для розв’язання практичних завдань. Завдання на розрахунково-графічну роботу (РГР). 1.Розробити алгоритми і написати програми мовою Java і ззастосуванням операторів циклів for, while, do while для розв’язання завдань, поданих в додатках1,2 відповідно до індивідуального варіанта. Варіанто брати за списком групи. 2.Розробити програмний проект в середовищі IntellijIDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками(наприклад, Excel, калькулятор, тощо).3.Оформити РГР та вчасно надіслати викладачу на перевірку файл РГР та файл програми. Так як варіант №25, виконуємо задачі під номером 25 Завдання №1 / Завдання №2 / Короткі описи рішення завдань: Опис вирішення завдання №1 Створено в Java клас RgrTr15Shep . В цьому класі розміщено методи main, task11, ,task12, ,task13,task2. Метод Main є головним і виконується першим, тому у ньому створюємо масив для завдання №1. Значення вводимо шляхом присвоєння. Тут відбувається виклик методу task11 Метод task11: Сюди передається початкова розширена матриця системи лінійних алгебраїчних рівнянь (СЛАР) та повертається трикутникова матриця. В даному методі організований прямий хід методу Гауса для розв’язання СЛАР. Використано два цикли for і while. Далі, у Main викликаємо метод task12 Метод task12: Сюди передається трикутникова матриця та повертається вектор результатів розв’язання СЛАР. В даному методі організований зворотний хід методу Гауса для розв’язання СЛАР. Використано два цикли for і while Далі, у Main викликаємо метод task13 три рази Метод task13: цей метод по-черзі передаємо початкову матрицю, трикутникову матрицю, вектор результатів для виводу в консоль. Вивід організовано із відповідними заголовками: «Початкова матриця:», «Трикутникова матриця:» і «Вектор результатів:». Метод зроблено універсальним шляхом перевантаження, для виводу матриць і вектору. Виведення організовано за допомогою метода System.out.printf форматованого виводу значень. Для дробових чисел – не більше 3 знаків після коми. Цілі числа виведено без коми та нулів після коми. (Зауваження: з невідомих мені причин деякі цілі числа поводять себе ніби вони дробові, і виводяться з комою і нулями після неї) Далі, починається розв’язання завдання №2. Щоб код був компактним, використано цикл while. Відбувається введення чисел (за допомогою методів класу Scanner), і подальше їх присвоєння у масив. Потім викликається метод task2. (Зауваження: число 0 зарезервоване для того, щоб переходити далі) Метод task2: у цей метод передаються масив чисел, що ввів користувач і далі відбувається їх обробка. Числа що нам підходять, присвоюються новому масиву. Повертається новий масив. За один цикл відбувається присвоєння значень, виклик методу і вивід результатів. Блок-схема для завдання №2 / / / / Копія коду на білому фоні package com.company; import static java.lang.Math.*; import java.util.Scanner; public class RgrTr15Shep { public static void main(String[] args) { double[][] data1={{-2,-6,1,-4,-6,-20}, {-6,-9,9,6,1,-79.3}, {8,-7,10,5,0,-52.4}, {8,6,-5,-6,-3,73.2}, {-6,-10,7,-9,5,34.9}}; double[][] triangle= task11(data1); double[] vector= task12(triangle); //Виведення початкової матриці System.out.println("\tПочаткова матриця"); task13(data1); System.out.println("\tТрикутникова матриця"); task13(triangle); System.out.println("\tВектор результатів"); // Виведення вектору результатів task13(vector); System.out.println(); // Код до завдання №2 System.out.println("\t Завдання №2 "); //Наступна змінна допоможе виконати цикл while int counter=1; while (counter<4) { System.out.printf("\t Введеня значень масиву №%d",counter); //Нехай, число 0 буде зарезервоване для того, щоб переходити далі System.out.println("\nВведіть масив чисел, які хочете перевірити.\n" + "Потім, щоб перейти далі натисніть - 0 "); //Ініціалізація змінних, які необхідні в програмі int a = 1; int i = 1; int[] arr = new int[10]; Scanner scan = new Scanner(System.in); while (a != 0) { a = 0; System.out.print(i + " число - "); a = scan.nextInt(); arr[i - 1] = a; i++; } // Виведення масиву заданих чисел System.out.println("\nЗадані числа"); for (int t = 0; t < arr.length; t++) { if (arr[t] == 0) continue; System.out.printf(" %d", arr[t]); } System.out.println(); int[] result = task2(arr); System.out.println("Числа, що задовільняють умову пошуку: "); //Виведення результату обробки int count=0; for (int t = 0; t < result.length; t++) { if (result[t] == 0) continue; System.out.printf(" %d", result[t]); count++; } if(count==0) System.out.println("\t Ой, таких чисел тут немає..."); System.out.println("\n"); counter++; } } public static int[] task2 (int[] array){ int[] newArr= new int[array.length]; int k=0; for (int i=0;i<array.length;i++){ if ((int)log10(array[i])+1==3 & array[i]%7==0 & array[i]!=0){ int odynytsi= array[i]%10; int des=array[i]%100/10; int sotni=array[i]/100; int sum= odynytsi+des+sotni; if (sum%7==0){ newArr[k]= (int) array[i]; k++; } } } return newArr; } //Метод приведення матриці до трикутникового вигляду public static double[][] task11 (double[][] array){ //Copy array double[][] arr = new double[array.length][array[0].length]; int n = 0; while (n < array.length){ for (int j = 0; j < array[n].length; j++) arr[n][j] = array[n][j]; n++; } //Метод Гауса //Приводження матриці до трикутникового вигляду double multiplayer; int c = 0; while(c < arr.length - 1){ for (int i = c + 1; i < arr.length; i++) { multiplayer = arr[i][c]/arr[c][c]; for (int j = c; j < arr[i].length; j++) arr[i][j] -= arr[c][j] * multiplayer; } c++; } return arr; } // Метод повернення вектору результатів public static double[] task12 (double[][] array){ //Copy array /*double[][] arr = new double[array.length][array[0].length]; int n = 0; while (n < array.length){ for (int j = 0; j < array[n].length; j++) arr[n][j] = array[n][j]; n++; }*/ int r =array.length; double[] vector= new double[array.length]; int i=r-1; while (i>=0){ vector[i]=array[i][r]/array[i][i]; for (int c=r-1;c>i;c=c-1){ vector[i]=vector[i]-array[i][c]*vector[c]/array[i][i]; } i=i-1; } return vector; } static void task13(double[][] arr){ for (int i=0;i< arr.length;i++) { System.out.print("|"); for (int j = 0; j < arr[i].length; j++) { if (arr[i][j] % 1 != 0) System.out.printf(" %5.3f", arr[i][j]); if (arr[i][j] % 1 == 0) System.out.printf(" %5d", (int) arr[i][j]); } System.out.print("\t|\n"); } } static void task13(double[] arr){ System.out.print("|"); for (int i = 0; i < arr.length; i++){ if(arr[i] % 1 != 0) System.out.printf("\t%.3f" , arr[i]); if (arr[i] % 1 == 0) System.out.printf("%d",arr[i]); } System.out.print("\t|\n"); } } Отримані результати / / Висновок: В процесі виконання розрахунково-графічної роботи, набуто практичних навичок розробки розгалужених та циклічних алгоритмів. У нашому випадку, для розв’язання системи лінійних алгебраїчних рівнянь методом Гауса . Побудовано блок-схему, що коротко і доступно описує процеси, що відбуваються при вирішенні завдання №2.
Антиботан аватар за замовчуванням

09.05.2023 17:47

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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