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