Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
ЗВІТ
з лабораторної роботи № 3
з дисципліни «Програмування алгоритмічних структур»
Тема «Програмування циклічних алгоритмів»
Варіант-15
Завдання на лабораторну роботу.
1. Розробити блок-схеми алгоритмів і написати програми мовою Java із застосуванням операторів циклів for, while, do while для розв’язання завдань, поданих в табл. 1 – 3 відповідно до індивідуального варіанта. Варіант обрати за списком групи.
2. Розробити програмні проекти в середовищі Intellij IDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками (наприклад, Excel, калькулятор, тощо).
3. Зробити Звіт з лабораторної роботи та вчасно надіслати викладачу на перевірку
Завдання 1:
/
Завдання 2:
/
Завдання 3:
/
Короткий опис рішення завдань:
Завдання №1.
У завданні 1 потрібно було розробити програму, яка допомогою заданих функцій, заданого кроку h змінної х, та обмеження значень змінної х для цієї функції досліджуються самі задані функції, і їхнє дослідження має виводитись у вигляді таблиці. Дану програму було розроблено у одному методі task1 типу void. У сам метод передаються мінімальне та максимальне значення х та крок цієї змінної. Дві функції досліджуються за допомогою циклу for() , у якому поступово із заданим кроком збільшується змінна х і підставляється у задані функції. Усі результати виводяться за допомогою форматованого виводу у вигляді таблиці у консоль.
Завдання №2.
Завдання 2 було виконане у двох методах task21 i task22. У методі task21 організовано обрахунок та виведення к-сті елементів послідовності, що діляться на 5 і не діляться на 7. У методі task22 організовано обчислення суми цих елементів. У методі main організовано вивід самої послідовності, виведення к-сті елементів, та їхня сума.
Завдання №3
Для виконання завдання 3 було створено 3 методи: task31, task32, task33. У методі task33 розроблено обчислення факторіалу заданого у нього числа, він був розроблений для його використання у методах task31, task32. У методі task31 організовано обчислення суми данного у завданні ряду. У методі task32 організовано обчислення добутку усіх членів даного у завданні ряду. У методі main організовано введення та виведення усіх даних що використовуються та визначаються у цих методах. У методах були використані різні цикли( for(), while()).
Блок-схема рішення завдання 3:
Task33() // Знаходження факторіалу числа
/
task31() // Обчислення суми членів ряду
/
task32() // Обчислення добутку членів ряду
/
Копія коду:
package com.company;
import static java.lang.Math.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// ---- Task1 ----
double min = 4.5;
double max = 18.5;
double h = 0.4;
task1(min,max,h);
System.out.printf("\n");
// ---- Task2 ----
int[] arr1 = {2,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35}; // y = 2n+1
int[] arr2 = {13,5,7,14,15,35,86,60,23,21,54,76,45}; // rand natural numbers
System.out.printf("-------- Task 2 -------\n");
System.out.printf("Послідовність: {");
for(int i = 0 ; i < arr1.length; i++) {
System.out.printf("%d, ", arr1[i]);
}
System.out.printf("}\n");
System.out.printf("К-сть елементів послідовності, що діляться на 5 і не діляться на 7: %d\n",task21(arr1));
System.out.printf("Сума цих елементів: %d\n",task22(arr1));
System.out.printf("\n\n");
System.out.printf("Послідовність: {");
for(int i = 0 ; i < arr2.length; i++) {
System.out.printf("%d, ", arr2[i]);
}
System.out.printf("}\n");
System.out.printf("К-сть елементів послідовності, що діляться на 5 і не діляться на 7: %d\n",task21(arr2));
System.out.printf("Сума цих елементів: %d\n",task22(arr2));
System.out.printf("\n");
// ---- Task3 ----
System.out.println("---- Task 3 ----");
Scanner scan = new Scanner(System.in);
System.out.printf("Уведіть число, для якого потрібно обрахувати суму чи добуток ряду: \n");
double x1 = scan.nextDouble();
System.out.printf("Введене число: x = %.4f \n", x1);
System.out.printf("Сума ряду: %.4f\nДобуток ряду: %.4f\n",task31(x1),task32(x1));
System.out.printf("Уведіть число, для якого потрібно обрахувати суму чи добуток ряду: \n");
double x2 = scan.nextDouble();
System.out.printf("Введене число: x = %.4f \n", x2);
System.out.printf("Сума ряду: %.4f\nДобуток ряду: %.4f\n",task31(x2),task32(x2));
}
public static void task1(double min, double max, double h) {
System.out.printf("-------- Task 1 -------\n\n");
System.out.printf("+-------+---------------+----------------+\n");
System.out.printf("| x = | y = x/(x-3)^2 | z = |cos(x/3)| |\n");
System.out.printf("+-------+---------------+----------------+\n");
for (double i = min; i <= max; i = i + h) {
double x = i;
double y1 = x/pow((x-3),2);
double y2 = abs(cos(x/3));
System.out.format("| %-6.1f| %-12.4f| %-13.4f|%n", x, y1, y2);
}
System.out.printf("+-------+---------------+----------------+\n");
}
public static int task21(int[] arr) {
// Обраховуємо к-сть елементів послідовності, що діляться на 5 і не діляться на 7
int count = 0;
for(int i = 0 ; i < arr.length; i++) {
if(arr[i] % 5 == 0 && arr[i] % 7 != 0) {
count++;
}
}
return count;
}
public static int task22(int[] arr) {
// Обчислення суму цих елементів
int sum = 0;
for(int i = 0 ; i < arr.length; i++) {
if(arr[i] % 5 == 0 && arr[i] % 7 != 0) {
sum += arr[i];
}
} return sum;
}
public static double task31(double x){
// Обчислення суми членів ряду
double sum = 0;
for(int k = 1; k <= 5; k++) {
sum += task33(k+1)/pow(x,k+2);
}
return sum;
}
public static double task32(double x){
// Обчислення добутку членів ряду
double sum = 1;
int k = 1;
while ( k <= 5 ) {
sum *= task33(k+1)/pow(x,k+2);
k++;
}
return sum;
}
public static double task33(double num){
// Обчислення факторіалу заданого числа
double fact = 1;
int i = 1;
while( i <= num) {
fact *= i;
i++;
}
return fact;
}
}
Скріншоти результатів обчислень:
/
/
Висновок:
Під час виконання даної лабораторної роботи набуто практичних навичок з використання операторів циклів при створюванні програмних проектів циклічної структури. Набуто навичок з створювання таблиць при виводі, обрахунку добутку, суми рядів та факторіалу. Усі розрахунки є вірними і були перевірені на калькуляторі.