Лабораторные работы / Лабораторная работа Прог-9 - А
.docxФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «ОМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра «Информатика и вычислительная техника»
ОТЧЕТ
по лабораторной работе №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;
}
Вывод на ПК: