Добавлен: 06.12.2023
Просмотров: 16
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
| Федеральное государственное бюджетное образовательное учреждение высшего образования «Национальный исследовательский университет «МЭИ» |
ИНСТИТУТ ДИСТАНЦИОННОГО И ДОПОЛНИТЕЛЬНОГО
ОБРАЗОВАНИЯ
Задание по учебной дисциплине: «Программирование»
Тема: «Динамические массивы.»
Вариант №6
Работу выполнил:
Студент группы ИДзс-21-22
Минин Дмитрий Михайлович
Москва 2023
Оглавление
Задача №2: 3
Условие 3
Состав данных 3
Блок-схема алгоритма 3
Программа на С++ 4
Пример выполнения программы: 6
Задача №3: 7
Условие 7
Состав данных 7
Блок-схема алгоритма 7
Программа на С++ 8
Пример выполнения программы: 10
Задача №4: 11
Условие 11
Состав данных 11
Блок-схема алгоритма 11
Программа на С++ 12
Пример выполнения программы: 15
Задача №2:
Условие
1. Найти число n1 отрицательных элементов вектора X и их сумму C1 и число n2 положительных элементов вектора Y и их сумму C2.
Состав данных
Имя | Назначение | Тип | Структура |
Исходные данные | |||
n | Количество элементов вектора X и Y | целый | простая переменная |
X | Вектор X | массив | одномерный |
Y | Вектор Y | массив | одномерный |
Выходные данные | |||
n1 | Количество отрицательных элементов вектора X | целый | простая переменная |
n2 | Количество положительных элементов вектора Y | целый | простая переменная |
C1 | Сумма отрицательных элементов вектора X | целый | простая переменная |
С2 | Сумма положительных элементов вектора Y | целый | простая переменная |
Промежуточные данные | |||
i | счётчик цикла | целый | простая переменная |
Блок-схема алгоритма
Программа на С++
#include
#include
using namespace std;
int main()
{
int n, n1 = 0, n2 = 0, C1 = 0, C2 = 0;
cout << "Enter the number of vector elements: " << endl;
cin >> n;
int* X = new int[n];
int* Y = new int[n];
// cout << "Enter the elements of the vector X: " << endl;
// Для удобства заполним массив псевдорандомными числами
cout << "Vector X: " << endl;
for (int i = 0; i < n; i++)
{
X[i] = rand() % 100 - 50;
cout << X[i] << endl;
if (X[i] < 0)
{
n1++;
C1 = C1 + X[i];
}
}
cout << "Vector Y: " << endl;
// cout << "Enter the elements of the vector Y: " << endl;
for (int i = 0; i < n; i++)
{
Y[i] = rand() % 100 - 50;
cout << Y[i] << endl;
if (Y[i] > 0)
{
n2++;
C2 = C2 + Y[i];
}
}
cout << "n1 = " << n1 << endl;
cout << "n2 = " << n2 << endl;
cout << "C1 = " << C1 << endl;
cout << "C2 = " << C2 << endl;
delete[] X, Y;
}
Пример выполнения программы:
Задача №3:
Условие
1. Для каждого столбца матрицы вычислить среднее арифметическое элементов, меньших первого элемента этого столбца
Состав данных
Имя | Назначение | Тип | Структура |
Исходные данные | |||
rows | Количество строк матрицы | целый | простая переменная |
columns | Количество столбцов матрицы | целый | простая переменная |
array[rows][columns] | Инициализируем матрицу | массив | двумерный |
Выходные данные | |||
first_elements_columns | Значения первых элементов столбцов | массив | одномерный |
average_mean | Средние арифметические значения элементов столбцов, меньших первого элемента этого столбца | массив | одномерный |
count | Количество элементов для подсчёта среднего арифметического значения | целый | простая переменная |
Промежуточные данные | |||
i | счётчик цикла | целый | простая переменная |
j | счётчик цикла | целый | простая переменная |
Блок-схема алгоритма
Программа на С++
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
int rows, columns, counter;
cout << "Введите количество строк матрицы: " << endl;
cin >> rows;
cout << "Введите количество столбцов матрицы: " << endl;
cin >> columns;
int* first_elements_columns = new int[columns];
float* average_mean = new float[columns];
int** array = new int* [rows];
for (int i = 0; i < rows; i++)
{
array[i] = new int[columns];
}
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
array[i][j] = rand() % 100;
}
}
cout << endl;
cout << "Матрица: " << endl;
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
cout << array[i][j] << "\t";
}
cout << endl;
}
cout << endl;
for (int i = 0; i < columns; i++)
{
first_elements_columns[i] = array[0][i];
}
cout << "Среднее арифметическое значений, что меньше первого элемента столбца:" << endl;
for (int i = 0; i < columns; i++)
{
average_mean[i] = 0;
counter = 0;
for (int j = 1; j < rows; j++)
{
if (array[j][i] < first_elements_columns[i])
{
average_mean[i] += array[j][i];
counter++;
}
}
average_mean[i] = average_mean[i] / counter;
cout << average_mean[i] << "\t";
}
cout << endl;
for (int i = 0; i < rows; i++)
{
delete[] array[i];
}
delete[] array, first_elements_columns, average_mean;
}
Пример выполнения программы:
Задача №4:
Условие
1. В матрицах A(7×7) и B(5×5) заменить каждый положительный элемент, стоящий выше главной диагонали, на нуль.
Состав данных
Имя | Назначение | Тип | Структура |
Исходные данные | |||
R_C_A | Количество строк и колонок матрицы A | целый | простая переменная |
R_C_B | Количество строк и колонок матрицы B | целый | простая переменная |
A | Инициализируем матрицу | массив | двумерный |
B | Инициализируем матрицу | массив | двумерный |
Выходные данные | |||
A[R_C_A][R_C_A] | Преобразованная матрица | массив | двумерный |
B[R_C_B][R_C_B] | Преобразованная матрица | массив | двумерный |
Промежуточные данные | |||
i | счётчик цикла | целый | простая переменная |
j | счётчик цикла | целый | простая переменная |
Блок-схема алгоритма
Программа на С++
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "ru");
const int R_C_A = 7;
const int R_C_B = 5;
int A[R_C_A][R_C_A], B[R_C_B][R_C_B];
cout << "Матрица А:" << endl;
for (int i = 0; i < R_C_A; i++)
{
for (int j = 0; j < R_C_A; j++)
{
A[i][j] = rand() % 100 - 50;
if (A[i][j] > 0)
{
cout << " ";
}
cout << A[i][j] << "\t";
}
cout << endl;
}
cout << endl;
cout << "Матрица B:" << endl;
for (int i = 0; i < R_C_B; i++)
{
for (int j = 0; j < R_C_B; j++)
{
B[i][j] = rand() % 100 - 50;
if (B[i][j] > 0)
{
cout << " ";
}
cout << B[i][j] << "\t";
}
cout << endl;
}
cout << endl;
for (int i = 0; i < R_C_A; i++)
{
for (int j = 0; j < R_C_A; j++)
{
if (i < j)
{
if (A[i][j] > 0)
{
A[i][j] = 0;
}
}
}
}
for (int i = 0; i < R_C_B; i++)
{
for (int j = 0; j < R_C_B; j++)
{
if (i < j)
{
if (B[i][j] > 0)
{
B[i][j] = 0;
}
}
}
}
cout << "Преобразованная матрица А:" << endl;
for (int i = 0; i < R_C_A; i++)
{
for (int j = 0; j < R_C_A; j++)
{
if (A[i][j] > 0)
{
cout << " ";
}
cout << A[i][j] << "\t";
}
cout << endl;
}
cout << endl;
cout << "Преобразованная матрица B:" << endl;
for (int i = 0; i < R_C_B; i++)
{
for (int j = 0; j < R_C_B; j++)
{
if (B[i][j] > 0)
{
cout << " ";
}
cout << B[i][j] << "\t";
}
cout << endl;
}
cout << endl;
}