Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
11.05.2024
Размер:
7.61 Mб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«ОМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Кафедра «Информатика и вычислительная техника»

ОТЧЕТ 

по лабораторной работе №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, что подтверждает верность программы.

Соседние файлы в папке Лабораторные работы