Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
ЗВІТ
з лабораторної роботи № 2
з дисципліни «Програмування алгоритмічних структур»
Тема «Програмування розгалужених алгоритмів»
Варіант № 3
/
Завдання 1:
/
Завдання 2:
/
Завдання 3:
/
Завдання 4:
/
Короткий опис рішення кожного завдання:
У першому завданні я створив новий клас Lr21, потім написав метод task1, який обчислює приклад в залежності від значення Х. Для цього я використав оператор if.
Для другого завдання я в цьому же класі створив метод task2, який обчислює приклад в залежності від Х і варіацій інших змінних яких всого три. Щоб вибрати правильну варіацію я використав оператор switch. В кожному Case я присвоїв змінним свої значення, щоб при виклику цього метода кожен раз не вводити три значення змінним а вибрати один з варіантів в яких вже є значення змінних.
Третє завдання я робив у новому класі Lr22 в якому зробив метод task3. За допомогою класа Scanner я присваїваю змінним значення з клавіатури. Даний метод порівнює три числа між собою і виводить з них середнє за значенням.
Для 4 завдання створив метод task4, який говорить чи лежить точка всередині кола, якщо дан його радіус, координати даної точки і центр кола лежить в початку координат. Щоб знайти відстань від точки до центра кола скористаємось теоремою Піфагора, бо відрізок між точкою і центром це є гіпотенуза, а перпендикуляр опущений з точки на вісь і проекція гіпотенузи на ту ж вісь це є катети.
Блок-схема до завдання 4:
/
Код програми Task1 і Task2 на білому фоні:
import java.lang.Math;
import java.util.Scanner;
public class Lr21 {
public static void main(String[] args) {
double x1, x2, x3;
x1 = -2.3;
x2 = 0.6;
x3 = 4.8;
System.out.printf("\nTask1\nif x = -2,3 y = %1$.4f", task1(x1));
System.out.printf("\nif x = 0,6 y = %1$.4f", task1(x2));
System.out.printf("\nif x = 4,8 y = %1$.4f\n\n", task1(x3));
System.out.printf("Task2\n if x = -2,3 with first set of b, m, n y = %1$.4f", task2(x1, 1));
System.out.printf("\n with second set of b, m, n y = %1$.4f", task2(x1, 2));
System.out.printf("\n with third set of b, m, n y = %1$.4f", task2(x1, 3));
System.out.printf("\n\nif x = 0.6 with first set of b, m, n y = %1$.4f", task2(x2, 1));
System.out.printf("\n with second set of b, m, n y = %1$.4f", task2(x2, 2));
System.out.printf("\n with third set of b, m, n y = %1$.4f", task2(x2, 3));
System.out.printf("\n\nif x = 4.8 with first set of b, m, n y = %1$.4f", task2(x3, 1));
System.out.printf("\n with second set of b, m, n y = %1$.4f", task2(x3, 2));
System.out.printf("\n with third set of b, m, n y = %1$.4f", task2(x3, 3));
}
public static double task1(double x) {
double a, b, z;
a = 0.1;
b = 3.25;
z = Math.pow(Math.cos(x), 2);
if (x < 0)
return (a + z) * Math.pow(Math.cos((b * x) + Math.pow(x, 3)), 2);
else if (a <= x && x <= b)
return a * Math.log(z * x) + Math.pow(Math.sin(Math.pow(b, 2)), 2);
return Math.pow(0.3 * b + Math.sqrt(Math.abs(a - Math.pow(z, 2))) , 1/3);
}
public static double task2(double x, int numb) {
double b, m, n;
switch (numb) {
case 1:
b = -1.6;
m = 0.9;
n = -1.4;
break;
case 2:
b = 4.5;
m = -2;
n = 2.2;
break;
case 3:
b = -4.5;
m = 0.5;
n = -1.5;
break;
default:
b = 0;
m = 0;
n = 0;
}
if (Math.abs(b * m) > Math.pow(x, 2))
return Math.sin(b * m + Math.cos(n * x));
else if (Math.abs(b * m) < Math.pow(x, 2))
return Math.cos(b * m - Math.sin(x));
return Math.sqrt(Math.pow(Math.E, Math.abs(Math.cos(x))) + Math.sqrt(Math.abs(b * m * x)));
}
}
Код програми Task3 і Task4 на білому фоні:
import java.util.Scanner;
import java.lang.Math;
public class Lr22 {
public static void main(String[] args) {
double a, b, c, x1, x2, x3, y1, y2, y3, R1, R2, R3;
x1 = 3;
y1 = -7;
R1 = 5;
x2 = 12;
y2 = 11;
R2 = 16;
x3 = -9;
y3 = 6;
R3 = 11;
Scanner scan = new Scanner(System.in);
System.out.print("task3");
for (int i = 0; i < 3; i++) {
System.out.print("\na = ");
a = scan.nextDouble();
System.out.print("b = ");
b = scan.nextDouble();
System.out.print("c = ");
c = scan.nextDouble();
System.out.printf("Середнє значення серед цих є %1$.4f\n", task3(a, b, c));
}
System.out.printf("\n\ntask4\n1):\n x = 3\n y = -7\n R = 5 \n %1s", task4(x1, y1, R1));
System.out.printf("\n\n2):\n x = 12\n y = 11\n R = 16 \n %1s", task4(x2, y2, R2));
System.out.printf("\n\n3):\n x = -9\n y = 6\n R = 11 \n %1s", task4(x3, y3, R3));
}
public static double task3(double a, double b, double c) {
if ((a <= b && b <= c) | (c <= b && b <= a))
return b;
else if ((b <= c && c <= a) | (a <= c && c <= b))
return c;
return a;
}
public static String task4(double x, double y, double R) {
if (Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)) <= R)
return "Точка лежить всередині кола";
return "Точка не лежить всередині кола";
}
Результати:
/
/
/
Висновок:
Я написав 4 програми мовою java використавши оператори if і switch, для розв'язання завдань поданих в табл 1-4 відповідно до індивідуального варіанту. набув практичних навичок при створенні проектів розгалуженої структури. Створив блок-схему до 4 завдання. Зробив звіт з лабораторної роботи і майже вчасно надіслав викладачу на перевірку.