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

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

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

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

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

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

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Теплоенергетичний факультет Кафедра автоматизації проектування енергетичних процесів і систем РОЗРАХУНКОВО-ГРАФІЧНА РОБОТА з дисципліни «Програмування алгоритмічних структур» Тема «Програмування базових алгоритмів» Варіант № 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:05-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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