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