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

Лабораторные работы / Лабораторная работа Прог-8 - А

.docx
Скачиваний:
0
Добавлен:
11.05.2024
Размер:
2.34 Mб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «ОМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

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

ОТЧЕТ

по лабораторной работе №8

«ПРОГРАММИРОВАНИЕ С ПРИМЕНЕНИЕМ ФУНКЦИЙ»

Выполнил:

Студент группы

Дата и подпись:

Проверил:

___________________

Омск 2023

Лабораторная работа 8: «Программирование с применением функций»

Задание 1: Написать и отладить программы для задач из лабораторных работ 1 и 6 с применением подпрограммы - функции с параметрами. Вычисление функции (или обработку массива) выполнить в подпрограмме, а ввод ис­ходных данных и вывод результатов - в основной программе. Предусмот­реть, по крайней мере, два обращения к функции с различными фактичес­кими параметрами (двумя массивами).

Схема алгоритма:

Код программы:

#include <iostream>

#include <iomanip>

// lab1

// ---------------------------------------------------------------------------

#define Pi 3.1415

double S_trapeze(double a, double b, double h) {

double answer = (a + b) * h / 2;

return answer;

}

double S_cone(double a, double b, double h) {

double r1 = sqrt(a / Pi);

double r2 = sqrt(b / Pi);

double side = fabs(r1 - r2);

double l = sqrt(h * h + side*side);

double answer = Pi * (r1 + r2) * l;

answer += a + b;

return answer;

}

// ---------------------------------------------------------------------------

// lab6

int max(int* target, int size) {

int max = -1000;

for (int i = 0; i < size; i++) {

if (max < target[i]) {

max = target[i];

}

}

return max;

}

void print(int* target, int size) {

std::cout << "[";

for (int i = 0; i < size; i++) {

std::cout << std::setw(3) << target[i] << " ";

}

std::cout << "]";

}

// ---------------------------------------------------------------------------

int main() {

setlocale(LC_ALL, "rus");

double length, wide, hight;

double sqr1, sqr2;

std::cout << "Введите первое основание трапеции, второе основание трапеции и ее высоту: \n";

std::cin >> length >> wide >> hight;

std::cout << "\nПлощадь вашей трапеции = " << S_trapeze(length, wide, hight);

std::cout << "\n\nВведите площадь первой окружности, площадь второй окружнсти и высоту усеченного цилиндра: \n";

std::cin >> sqr1 >> sqr2 >> hight;

std::cout << "\nПлощадь поверхности вашего усеченного цилиндра = " << S_cone(sqr1, sqr2, hight);

int n;

std::cout << "\n\nВведите длину массивов: ";

std::cin >> n;

if (n < 10 && n > 15) {

std::cout << "Вы ввели некоректное значение n. Для удобства вычислений ваше n = 10" << std::endl;

n = 12;

}

int* a = new int[n];

int* b = new int[n];

for (int i = 0; i < n; i++) {

std::cout << " - Введите элемент массива номер " << i + 1 << ": ";

std::cin >> a[i];

b[i] = rand() % 21 - 10;

}

std::cout << "\n\n Ваш массив, заданный вручную: ";

print(a, n);

std::cout << "\n Ваш массив, заданный программой: ";

print(b, n);

std::cout << "\n\n Максимальное значение в массиве, введенном вручную: " << max(a, n) << std::endl;

std::cout << " Максимальное значнение в заданном программой массиве: " << max(b, n) << std::endl;

std::cout << "\n\t\tКонец программы\n";

return 0;

}

Вывод на ПК:

Задание 2: Даны две квадратные вещественные матрицы шестого порядка. Напечатать квадрат той из них, в которой наименьший след (сумма диагональных элементов), считая, что такая матрица одна.

Схема алгоритма:

Код программы:

#include <iostream>

#include <iomanip>

void print(int** target, int size) {

for (int i = 0; i < size; i++) {

for (int j = 0; j < size; j++) {

std::cout << std::setw(3) << target[i][j] << " ";

}

std::cout << std::endl;

}

}

void fill(int** target, int LEN) {

for (int i = 0; i < LEN; i++) {

for (int j = 0; j < LEN; j++) {

target[i][j] = rand() % 21 - 10;

}

}

}

int vec(int** target, int size) {

int sum = 0;

for (int i = 0; i < size; i++) {

sum += target[i][i];

}

return sum;

}

int main() {

const int LEN = 6;

int** first = new int* [LEN];

int** second = new int* [LEN];

for (int i = 0; i < LEN; i++) {

first[i] = new int[LEN];

second[i] = new int[LEN];

}

fill(first, LEN);

fill(second, LEN);

if (vec(first, LEN) > vec(second, LEN)) print(first, LEN);

else print(second, LEN);

}

Вывод на ПК:

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