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

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

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

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

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

ОТЧЕТ

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

«ПРОГРАММИРОВАНИЕ С ВОЗВРАТОМ ИЗ ФУНКЦИЙ НЕСКОЛЬКИХ ЗНАЧЕНИЙ»

Выполнил: Бектимиров А. Е.

Студент группы ИВТ-234

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

Проверил:

___________________

Омск 2023

Лабораторная работа № 9: «Программирование с возвратом из функций нескольких значений».

Задание 1: Написать и отладить программу для задачи из лабораторной работы 7 с выделением алгоритма обработки или формирования массива. Организовать вызов процедуры с параметрами-массивами для двух наборов исходных данных.

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

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

#include <iostream>

#include <iomanip>

#include <random>

void fill(int** target, int len1, int len2) {

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

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

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

}

}

}

void print(int** target, int len1, int len2) {

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

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

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

}

std::cout << std::endl;

}

}

int** transport(int** target, int len1, int len2) {

int** transported = new int* [len2];

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

transported[i] = new int[len1];

}

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

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

transported[i][j] = target[j][i];

}

}

return transported;

}

int main() {

setlocale(LC_ALL, "rus");

int n, m;

std::cout << "Введите размеры матрицы: " << std::endl;

std::cin >> n;

std::cin >> m;

if (n < 1 || n > 5) n = 4;

if (m < 1 || m > 5) m = 4;

int** map = new int* [n];

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

map[i] = new int[m];

}

fill(map, n, m);

print(map, n, m);

int** answer = transport(map, n, m);

std::cout << std::endl;

print(answer, m, n);

return 0;

}

Вывод на ПК:

Задание 2: Даны массивы A [1..5], B [1..6]. Получить новые массивы путем сдвига элементов в массивах на два разряда вправо, освободившиеся слева элементы обнулить. Сдвиг элементов в массиве оформить подпрограммой, из подпрограммы вернуть выпавшие справа разряды.

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

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

#include <iostream>

#include <iomanip>

#include <random>

int func(int* target, int size, int *answer_two) {

int answer_one = target[size - 2];

*answer_two = target[size - 1];

return answer_one;

}

void print(int* target, int size) {

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

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

}

}

void fill(int* target, int size) {

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

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

}

}

int main() {

setlocale(LC_ALL, "rus");

int A[5], B[6];

fill(A, 5);

std::cout << "Массив А: ";

print(A, 5);

fill(B, 6);

std::cout << "\nМассив В: ";

print(B, 6);

int answer_one, answer_two;

std::cout << "\n\nВыпавшие значения первого массива: ";

answer_one = func(A, 5, &answer_two);

std::cout << answer_one << " " << answer_two;

std::cout << "\nВыпавшие значения второго массива: ";

answer_one = func(B, 6, &answer_two);

std::cout << answer_one << " " << answer_two;

return 0;

}

Вывод на ПК:

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