Лабораторные работы / лабы / lab_2_отчёт вар 9
.docxФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ОМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра «Информатика и вычислительная техника»
ОТЧЕТ
по лабораторной работе №2
«ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЕННЫХ АЛГОРИТМОВ.
ОПЕРАТОРЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ»
-
Выполнил:
студент группы ИВТ-234 Кукушкина А.А.
______________________________________
(дата, подпись)
Проверил:
ст. пр. доцент Дорошенко М.С.
_____________________________________________________
(дата, подпись)
Омск 2023
Лабораторная работа №2
Тема: Программирование разветвленных алгоритмов.
Операторы передачи управления
Вариант 9
Задание 1
Условие задачи:
Вычислить значение функции в зависимости от интервала, в который попадает вводимый с клавиатуры аргумент:
Для t [1,5], t при t>a,
где a=2.5 z = t sin a t при t=a,
e-at cos a t при t<a,
Схема алгоритма:
Текст программы:
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <math.h>
#define a 2.5
int main()
{
setlocale(LC_ALL, "RUS");
float t, z;
printf("Введите t [1;5]. \n");
scanf_s("%f", &t);
if ((t >= 1) && (t <= 5))
{
if (t > a) z = t * pow(t - a, 1.0 / 3);
else if (t == a) z = t * sin(a * t);
else z = exp(-a * t) * cos(a * t);
printf("При t = %f, z = %f. \n", t, z);
}
else printf("Значение не принадлежит промежутку [1;5].");
_getch();
return 0;
}
Результаты выполнения программы, выводы:
П осле выполнения программы при t ∈ [1;5]: при t > a, например, t = 4 на экран выводится: z = 4,578857; при t = a на экран выводится: z = -0,082948; при t < a, например, t = 2 на экран выводится z = 0,001911. Если ввести t ∈ (-∞;1) или t ∈ (5;+∞), на экран выведется «Значение не принадлежит промежутку [1;5].». Предварительно рассчитанный при подготовке к лабораторной работе на калькуляторе результат составил соответственно z = 4,57886; z = -0,082948; z = 0,0019113, что подтверждает верность программы.
Задание 2
Условие задачи:
В зависимости от номера (N) типа фигуры, организовать ввод необходимых данных и вычислить при N = 1 - площадь прямоугольника, при N=2 - площадь параллелограмма, при N = 3 - площадь трапеции 1/2(a+b)h. В последнем случае напечатать: является ли трапеция параллелограммом или ромбом.
Схема алгоритма:
Текст программы:
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <math.h>
int main()
{
setlocale(LC_ALL, "RUS");
int N;
float pr, par, tr, a, b, c, d, h;
printf("Введите N - номер типа фигуры. \n");
scanf_s("%d", &N);
switch (N)
{
case 1:
printf("Введите стороны a и b прямоугольника. \n");
scanf_s("%f%f", &a, &b);
pr = a * b;
printf("Площадь прямоугольника со сторонами %f и %f = %f. \n", a, b, pr);
break;
case 2:
printf("Введите основание a и высоту h параллелограмма. \n");
scanf_s("%f%f", &a, &h);
par = a * h;
printf("Площадь параллелограмма с основанием %f и высотой %f = %f. \n", a, h, par);
break;
case 3:
printf("Введите основания a и b, бёдра c и d и высоту h трапеции. \n");
scanf_s("%f%f%f%f%f", &a, &b, &c, &d, &h);
tr = (a + b) * h/2;
printf("Площадь трапеции с основаниями %f и %f и высотой %f = %f. \n", a, b, h, tr);
if ((a == b) && (a == c) && (a == d) && (b == c) && (b == d) && (c == d))
printf("Данная трапеция является ромбом. \n");
else if ((a == b) && (c == d))
printf("Данная трапеция является параллелограммом. \n");
else printf("Данная трапеция не является ромбом или параллелограммом. \n");
break;
default:
printf("Тип фигуры с таким номером не предусмотрен условием задачи. \n");
}
_getch();
return 0;
}
Результаты выполнения программы, выводы:
После выполнения программы при вводе N = 1, требуется ввести значения сторон прямоугольника, требуемые для нахождения его площади по формуле a*b = площадь прямоугольника. Так, например, при a = 2, b = 4, на экран выводится площадь прямоугольника = 8. Этот результат подтверждается вычислениями на калькуляторе.
При вводе N = 2, требуется ввести значения стороны и высоты параллелограмма, требуемые для нахождения его площади по формуле a*h = площадь параллелограмма. Так, например, при a = 3, b = 5, на экран выводится площадь параллелограмма = 15. Этот результат подтверждается вычислениями на калькуляторе.
При вводе N = 3, требуется ввести значения оснований, боковых сторон и высоты трапеции, требуемые для нахождения его площади по формуле *h = площадь трапеции и определения, является ли данная трапеция ромбом или параллелограммом.
Так, например, при a = b = c = d = 4, h = 6 на экран выводится площадь трапеции = 24 и то, что данная трапеция является ромбом.
При a = b = 6, c = d = 3, h = 5 на экран выводится площадь трапеции = 30 и то, что данная трапеция является параллелограммом.
При a = 2, b = 4, c = 3, d = 3, h = 2 на экран выводится площадь трапеции = 6 и то, что данная трапеция не является ромбом или параллелограммом.
Если ввести N ≠ 1, 2 или 3, то на экран выведется сообщение о том, что тип фигуры с таким номером не предусмотрен условием задачи.
Задание 3
Условие задачи:
Вычислить значение функции в зависимости от интервала, в который попадает вводимый с клавиатуры аргумент:
Для t [1,5], t при t>a,
где a=2.5 z = t sin a t при t=a,
e-at cos a t при t<a,
Реализовать через условную операцию ( ? :).
Схема алгоритма:
Текст программы:
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <math.h>
#define a 2.5
int main()
{
setlocale(LC_ALL, "RUS");
float t, z1, z2, z3;
printf("Введите t [1;5]. \n");
scanf_s("%f", &t);
z1 = t * pow(t - a, 1.0 / 3);
z2 = t * sin(a * t);
z3 = exp(-a * t) * cos(a * t);
(t >= 1 && t <= 5) ? (t > a) ? printf("При t = %f, z = %f. \n", t, z1) : (t == a) ? printf("При t = %f, z = %f. \n", t, z2) : printf("При t = %f, z = %f. \n", t, z3) : printf("Значение не принадлежит промежутку [1;5].");
_getch();
return 0;
}
Результаты выполнения программы, выводы:
П осле выполнения программы при t ∈ [1;5]: при t > a, например, t = 4 на экран выводится: z = 4,578857; при t = a на экран выводится: z = -0,082948; при t < a, например, t = 2 на экран выводится z = 0,001911. Если ввести t ∈ (-∞;1) или t ∈ (5;+∞), на экран выведется «Значение не принадлежит промежутку [1;5].». Предварительно рассчитанный при подготовке к лабораторной работе на калькуляторе результат составил соответственно z = 4,57886; z = -0,082948; z = 0,0019113, что подтверждает верность программы.