Програмування циклічних алгоритмів

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

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

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

Рік:
2024
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування

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

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

03.05.2023 18:05-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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