Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛАБ 2 - Массив, матрица - СФ

.pdf
Скачиваний:
1
Добавлен:
06.11.2022
Размер:
425.88 Кб
Скачать

Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования

ТОМСКИЙ ГОСУДАРСТВЕЕНЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра комплексной информационной безопасности электронно-вычислительных систем (КИБЭВС)

Массивы

Лабораторная работа №2 по дисциплине «Основы программирования» Отчет по лабораторной работе

Студент гр. ххххх

________ ххххх. 15.02.2022

Руководитель: Преподаватель КИБЭВС

_________ ________ ххххх

18.02.2022

Томск 2022

2

Содержание Введение……………………………………………………………………………………. 3 Теоретические сведения…………………………………………………………………… 4 Ход работы для задания №1………………………………………………………………. 5 Ход работы для задания №2………………………………………………………………. 8

Заключение……………………………………………………………………………….. 10

Список использованной литературы……………………………………………………. 11

3

1 Введение

Целью данной лабораторной работы является получить навыки работы с основными структурными данными на примере массивов.

Задание на работу заключается в том, чтобы составить консольное приложение для решения задач, вводя данные в ходе выполнения программы.

Задание 1: Дан массив из N элементов (вещественные числа). Вычислить: 1) количество отрицательных элементов массива; 2) сумму модулей элементов массива, расположенных после минимального по модулю элемента. Заменить все отрицательные элементы массива их квадратами и упорядочить элементы массива по возрастанию.

Задание 2: Дана действительная матрица размера nХm. Найти сумму наибольших значений элементов её строк.

4

2 Теоретические сведения

Массив – структура данных в виде набора компонентов, которые называются элементы

массива.

Двумерный массив – это набор однотипных данных, имеющий общее имя, доступ к

элементам которого осуществляется по двум индексам.

5

3 Ход работы для задания №1

В данном алгоритме сначала просится пользователю ввести переменную “N”, затем программа создаст массив, затем присвоит ему значения, а также сгенерирует рандомное число в том промежутке в каком может укажет пользователь и затем умножит это значение на значению элемента массива, затем выведет их на экран. Затем с помощью цикла с условием посчитает количество отрицательных значений массива и выведет его на экран, затем найдет минимальное по модулю значение массива и его индекс и также выведет на экран, затем посчитает сумму элементов по модулю после этого элемента и также выведет на экран.

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

Рисунок 2.1 - Блок-схема алгоритма 1

Ниже представлен сам код программы:

using System;

namespace ConsoleApp2

{

class Program

{

static void Main(string[] args)

{

6

Console.Write("Введите количество элементов массива "); int N = int.Parse(Console.ReadLine());

double[] arr1 = new double[N]; Random rand = new Random(); Random rand2 = new Random(); int minus = 0;

double sumafter = 0;

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

{

arr1[i] = rand.NextDouble(); double r = rand2.Next(-10, 10); arr1[i] = arr1[i]*r;

}

foreach (double s in arr1) Console.Write(s + " "); Console.WriteLine();

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

{

if (arr1[i] < 0) minus += 1;

}

Console.WriteLine("Количество отрицательных чисел равно " + minus);

double min = Math.Abs(arr1[0]); int indexmin = 0;

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

{

if (Math.Abs(arr1[i]) < min)

{

indexmin = i;

min = Math.Abs(arr1[i]);

}

}

Console.WriteLine("Минимальное равно " + min + " Индекс минимального равен

" + indexmin);

if (indexmin == N)

Console.WriteLine("Сумма после равна 0");

else

for (int i = indexmin + 1; i != N; i++)

{

sumafter += Math.Abs(arr1[i]);

}

Console.WriteLine("Сумма после равна " + sumafter);

Console.Write("Массив после квадрата "); for (int i = 0; i < N; i++)

{

if (arr1[i] < 0)

arr1[i] = Math.Pow(arr1[i], 2); Console.Write(arr1[i] + "\t");

}

Console.WriteLine(); Console.Write("Упорядоченный массив: "); for (int i = 0; i < N; i++)

{

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

{

double t = arr1[j + 1]; arr1[j + 1] = arr1[j]; arr1[j] = t;

}

}

7

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

{

Console.Write(arr1[i] + "\t");

}

}

}

}

Рисунок 3.2 - Работа программы 1

Данная программа работает корректно, без каких-либо проблем.

8

4 Ход работы для задания №2

Данная программа создает двумерный массив, заполняет его и считает сумму наибольших значений её строк, и выводит эту сумму на экран.

Рисунок 4.1 - Блок-схема алгоритма 2

Ниже представлен сам код программы:

using System; namespace masMAS

{

class Program

{

static void Main(string[] args)

{

Console.Write("Введиете колическтво строк "); int n = int.Parse(Console.ReadLine()); Console.Write("Введиете колическтво столбцов "); int m = int.Parse(Console.ReadLine());

int [,] array = new int[n, m];

Random rand = new Random();

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

{

for (int j = 0; j < m; j++)

{

array[i,j] = rand.Next(-10,10);

}

}

Console.Write("Массив равен: ");

9

Console.WriteLine();

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

{

for (int j = 0; j < m; j++)

{

Console.Write(array[i,j] + "\t");

}

Console.WriteLine();

}

int sumax = 0;

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

{

int maxstr = array[i, 0]; for (int j = 0; j < m; j++)

{

if (maxstr < array[i,j]) maxstr = array[i,j];

}

sumax += maxstr;

}

Console.WriteLine("MAX sum = " + sumax);

}

}

}

Рисунок 4.2 - Работа программы 2

Данная программа работает корректно, без каких-либо проблем.

10

5Заключение

Входе данной лабораторной были получены навыки работы с основными структурными данными на примере массивов.