Файл: Динамические массивы..docx

ВУЗ: Не указан

Категория: Решение задач

Дисциплина: Не указана

Добавлен: 06.12.2023

Просмотров: 18

Скачиваний: 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;
}

Пример выполнения программы: