Лабораторные работы / lab_9_отчёт
.docxФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ОМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра «Информатика и вычислительная техника»
ОТЧЕТ
по лабораторной работе № 9
«ПРОГРАММИРОВАНИЕ С ВОЗВРАТОМ ИЗ ФУНКЦИЙ НЕСКОЛЬКИХ ЗНАЧЕНИЙ»
-
Выполнил:
студент группы ИВТ-234 Кукушкина А.А.
______________________________________
(дата, подпись)
Проверил:
ст. пр. доцент Дорошенко М.С.
_____________________________________________________
(дата, подпись)
Омск 2023
Лабораторная работа №9
Тема: Программирование с возвратом из функций нескольких значений
Вариант 9
Задание 1
Условие задачи:
Написать и отладить программу для задачи из лабораторной работы 7 с выделением алгоритма обработки или формирования массива. Организовать вызов процедуры с параметрами-массивами для двух наборов исходных данных. (Для ускорения отладки массив можно задать константой).
Задача 7_2 с применением подпрограммы:
Схема алгоритма:
Текст программы:
#include<stdio.h>
#include<conio.h>
void seventwo(int a[11][11])
{
for (int i = 1; i < 11; i++)
{
for (int j = 1; j < 11; j++)
{
a[i][j] = i * j;
}
}
}
int main()
{
int a[11][11];
seventwo(a);
for (int i = 1; i < 11; i++)
{
for (int j = 1; j < 11; j++)
{
printf("%4d", a[i][j]);
}
printf("\n");
}
_getch();
return 0;
}
Результаты выполнения программы, выводы:
После выполнения программы на экран вывелась таблица Пифагора.
Задание 2
Условие задачи:
Даны массивы A [1..6], B[1..8]. Выбрать из них положительные элементы и записать соответственно в массивы A [1..k] и B [1..k], где k<6, n<8; из отрицательных элементов сформировать массивы A2 [1..6-k],B2 [1..8-n]. Напечатать суммы и произведения элементов для каждого.
Схема алгоритма:
Текст программы:
#include <iostream>
#include <conio.h>
#include <locale.h>
#include <vector>
using namespace std;
int sum(int* mas)
{
int sum = 0;
for (int i = 0; i < sizeof(mas); i++)
{
sum += mas[i];
}
return sum;
}
int pr(int* mas)
{
vector<int> p;
for (int i = 0; i < sizeof(mas); i++)
{
if (mas[i] != 0) p.push_back(mas[i]);
}
int pr = 1;
for (int i = 0; i < p.size(); i++)
{
pr *= p[i];
}
return pr;
}
void func(int* mas, int* sp, int* pp, int* so, int* po)
{
int masp[sizeof(mas)]{};
int maso[sizeof(mas)]{};
for (int i = 0; i < sizeof(mas); i++)
{
if (mas[i] > 0) masp[i] = mas[i];
else if (mas[i] < 0) maso[i] = mas[i];
}
*sp = sum(masp);
*pp = pr(masp);
*so = sum(maso);
*po = pr(maso);
}
int main()
{
setlocale(LC_ALL, "ru");
int sp, pp, so, po;
int A[]{ 81, -62, -38, -10, -47, 21 };
int B[]{ 81, -62, -38, -10, -47, 69, 21, -37 };
func(A, &sp, &pp, &so, &po);
cout << "Для массива A:\n";
cout << "Сумма положительных элементов = " << sp << endl;
cout << "Произведение положительных элементов = " << pp << endl;
cout << "Сумма отрицательных элементов = " << so << endl;
cout << "Произведение отрицательных элементов = " << po << endl;
cout << "\n";
func(B, &sp, &pp, &so, &po);
cout << "Для массива B:\n";
cout << "Сумма положительных элементов = " << sp << endl;
cout << "Произведение положительных элементов = " << pp << endl;
cout << "Сумма отрицательных элементов = " << so << endl;
cout << "Произведение отрицательных элементов = " << po << endl;
_getch();
return 0;
}
Результаты выполнения программы, выводы: