Вы находитесь на странице: 1из 9

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение


высшего образования
Восточно-Сибирский государственный университет технологий и
управления
(ФГБОУ ВСГУТУ)

Электротехнический факультет

Кафедра «Системы Информатики»

Дисциплина
«Основы программирования»

Отчет по лабораторной работе №4


На тему:
Массивы
Вариант 2

Выполнил:          студент гр. Б660


Землякова Е.А.

Проверил:        Дышенов Б.А.


  
1 Словесная постановка задачи
1. В одномерном массиве, состоящем из N целых элементов,
вычислите сумму модулей элементов массива, расположенных до последнего
положительного элемента (если все элементы положительные, то сумму всех
элементов, если все элементы отрицательные, то сумма = 0).

2. Дана матрица целых чисел A(N, N). Перепишите элементы её


главной диагонали в одномерный массив Y(N) и разделите их на
максимальный элемент главной диагонали (результат будет
вещественным).

3.
2 Решение задачи 1

2.1 Формальная постановка задачи

Входные данные: одномерный массив A, состоящий из n = 10 целых чисел,


которые вводит пользователь.

Выходные данные: s – сумма модулей элементов массива, расположенных до


последнего положительного элемента.

2.2 Проектирование

Начало

N = 10

i = 0; i < N; i++

Ввод A[i]

j = -1

i = 0; i < N; i++

Нет
A[i] > 0
Да
j=i

i = 0; i <= j; i++

s += abs(A[i])

Вывод s

Конец
В начале алгоритма выполняется цикл, в котором производится ввод
значений элементов массива. Далее, значением –1 инициализируется
переменная j, в которой уже в новом цикле вычисляется индекс последнего
положительного элемента массива. После выполнения этого цикла,
значением 0 инициализируется переменная s, в которой будет вычисляться
сумма модулей элементов массива, расположенных до последнего
положительного элемента. Данная сумма вычисляется в третьем по счёту
циклу по элементам до j, который не будет выполнен ни разу, если в
процессе выполнения предыдущего цикла не было найдено ни одного
положительного элемента, т.е. j = –1. Когда сумма вычислена, она выводится
на экран, после чего алгоритм завершается.

2.3 Реализация

#include <iostream>

using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
const int N = 10;

int A[N];
cout << "Введите элементы массива из " << N << " элементов" << endl;
for (int i = 0; i < N; i++)
{
cout << "A[" << i << "] = ";
cin >> A[i];
}

int j = -1;
for (int i = 0; i < N; i++)
if (A[i] > 0)
j = i;

int s = 0;
for (int i = 0; i <= j; i++)
s += abs(A[i]);
cout << "Сумма модулей элементов, расположенных до последнего положительного: " << s
<< endl;

system("Pause");
return 0;
}
2.4 Тестирование
3 Решение задачи 2

3.1 Формальная постановка задачи

Входные данные: двумерный массив A, состоящий из n*n = 100 целых


чисел, которые вводятся из генератора случайных чисел.

Выходные данные: одномерный массив Y, состоящий из n = 10


вещественных чисел, которые вычисляются как элементы главной диагонали
матрицы A, поделенные на максимальное значение главной диагонали.

3.2 Проектирование

Начало 1

N = 10 Вывод a_max

i = 0; i < N; i++ i = 0; i < N; i++

j = 0; j < N; j++ Y[i] /= a_max

A[i][j] = rand() %
201 - 100
i = 0; i < N; i++
Вывод A[i][j]
Вывод Y[i]

a_max = A[0][0] Конец

i = 0; i < N; i++

Y[i] = A[i][i] 1

Вывод Y[i]

Нет
Y[i] > a_max
Да
a_max = Y[i]
В начале алгоритма случайными целыми числами в интервале от –100
до 100 заполняется двумерный массив A размера 10 на 10 элементов и
выводится на экран. Далее, из элементов главной диагонали этой матрицы
заполняется одномерный массив Y. В процессе заполнения массива
вычисляется максимальный массив. После заполнения массива, все его
элементы делятся на значение максимального элемента и полученные
значения выводятся на экран. На этом алгоритм завершается.

3.3 Реализация

#include <iostream>
#include <ctime>
#include <iomanip>

using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");

const int N = 10;


int A[N][N];
double Y[N];
int a_max;

srand(time(NULL));
cout << "Матрица A размера " << N << "x" << N << " элементов" << endl;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
A[i][j] = rand() % 201 - 100;
cout << setw(5) << A[i][j];
}
cout << endl;
}

cout << "Результат заполнения массива Y" << endl;


a_max = A[0][0];
for (int i = 0; i < N; i++)
{
Y[i] = A[i][i];
cout << Y[i] << " ";

if (Y[i] > a_max)


a_max = Y[i];
}

cout << endl << "Значение максимального элемента массива: " << a_max << endl;

for (int i = 0; i < N; i++)


Y[i] /= a_max;
cout << "Результат обработки массива Y" << endl;
cout << setprecision(4);
for (int i = 0; i < N; i++)
cout << Y[i] << " ";
cout << endl;

system("Pause");
return 0;
}

3.4 Тестирование
Заключение

В результате выполнения данной работы я изучила методы создания


массива переменных, а также способы их применения.