ЛАБ 2 - Массив, матрица - СФ
.pdfМинистерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕЕНЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра комплексной информационной безопасности электронно-вычислительных систем (КИБЭВС)
Массивы
Лабораторная работа №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Заключение
Входе данной лабораторной были получены навыки работы с основными структурными данными на примере массивов.