Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
ЗВІТ
з Розрахункової графічної роботи
з дисципліни «Програмування алгоритмічних структур»
Тема «Програмування базових алгоритмів»
Варіант № 3
Завдання на розрахунково-графічну роботу (РГР).
1.Розробити алгоритми і написати програми мовою Java із застосуванням операторів циклів for, while, do while для розв’язання завдань, поданих в додатках 1, 2 відповідно до індивідуального варіанта. Варіант обрати за списком групи.
2.Розробити програмний проект в середовищі IntellijIDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками (наприклад, Excel, калькулятор, тощо).
3.Оформити РГР та вчасно надіслати викладачу на перевіркуфайл РГР та файл програми.
Завдвння 1:
/
Завдання 2:
/
Короткий опис завдання 1:
Для першого завдання я створив метод task1 в якому за допомогою циклів while I for метод перетворює початкову матрицю на трикутну. Далі було написано метод task2 в якому при задаванні трикутної матриці, повертався вектор результатів.
Метод task3 створено щоб виводити на екран матриці.
Короткий опис другого завдання:
Для другого завдання я створив метод task2 в якому за допомогою одного цикла while зміг виводити суму дільників заданого числа. Число задаєтьбся вручну.
Блок-схема до другого завдання:
/
Копія коду на білому фоні:
package com.company;import java.util.Scanner;public class RgrTr15Slus { public static void main(String[] args) { double arr[][] = {{-2, 0, 2, 4, -3, 44.8},{-1, 0, -5, 1, -5, 28.6}, {-2, 1, -2, 3, -5, 34.5}, {-1, -4, -5, 0, 5, -23.8}, {-5, 2, -1, -5, 2, -99.6}}; double matrix[][] = new double[arr.length][arr[0].length]; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[1].length; j++) { matrix[i][j] = arr[i][j]; } } //поміняємо рядки матриці так щоб на головній діагоналі не було нулів for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[0].length; j++) { if (arr[i][i] == 0) { matrix[i][j] = matrix[arr.length - 1][j]; matrix[arr.length - 1][j] = arr[i][j]; } } } System.out.print("\nПочаткова матриця:\n"); task13(arr); System.out.print("Трикутна матриця:\n"); task13(task11(matrix)); System.out.print("Вектор результатів: \n"); task12(task11(matrix)); System.out.println("Task2"); int a, b, с; Scanner scan = new Scanner(System.in); System.out.print("Введіть число: "); a = scan.nextInt(); task2(a); System.out.print("Введіть інше число: "); b = scan.nextInt(); task2(b); System.out.print("Введіть ще одне число: "); с = scan.nextInt(); task2(с); } public static double[][] task11(double array[][]) { double[][] array2 = new double[array.length][array[0].length]; int i = 0; while (i < array.length) { for (int j = 0; j < array[i].length; j++) { array2[i][j] = array[i][j]; } i++; } double p; for (int k = 1; k < array2.length; k++) { for (int j = k; j < array2.length; j++) { if (array2[k - 1][k - 1] == 0) { double arr[][] = new double[array.length][array[0].length]; for (int a = 0; a < 5; a++) { for (int b = 0; b < 6; b++) { arr[a][b] = array2[a][b]; } } } p = array2[j][k - 1] / array2[k - 1][k - 1]; int n = k - 1; while (n < array2[j].length) { array2[j][n] = array2[j][n] - p * array2[k - 1][n]; n++; } } } return array2; } public static void task12(double array[][]) { double x1, x2, x3, x4, x5; x5 = array[4][5] / array[4][4]; x4 = (array[3][5] - array[3][4] * x5) /array[3][3]; x3 = (array[2][5] - array[2][4] * x5 - array[2][3] * x4) / array[2][2]; x2 = (array[1][5] - array[1][4] * x5 - array[1][3] * x4 - array[1][2] * x3) / array[1][1]; x1 = (array[0][5] - array[0][4] * x5 - array[0][3] * x4 - array[0][2] * x3 - array[0][1] * x2) / array[0][0]; System.out.printf("x1 = %1.2f \n", x1); System.out.printf("x2 = %1.2f \n", x2); System.out.printf("x3 = %1.2f \n", x3); System.out.printf("x4 = %1.2f \n", x4); System.out.printf("x5 = %1.2f \n", x5); } public static void task13(double array[][]) { for (int i = 0; i < 5; i++) { for (int j = 0; j < 6; j++) { if (array[i][j] % 1 == 0) { System.out.printf("%1.0f\t", array[i][j]); } else { System.out.printf("%1.2f\t", array[i][j]); } } System.out.printf("\n"); } } public static void task2(int a) { int i = 1; int p = 0; while (i <= a) { if (a % i == 0) { p = p + i; i++; } else { i++; } } System.out.printf("Сума дільників числа %d = %d\n", a, p); }
}
Результати обчислень:
/
Висновки:
Під час даної розрахунково-графічної роботи я вдосконалив свої навички щодо роботи з циклами, матрицями, методами і операціями над змінними. Набув знань щодо використання циклів for і while при створюванні програм циклічної будови.
Написав програму для розв’язання СЛАР методом Гаусса.
Оформив звіт і здав викладачу на перевірку.