
ОП_отчет.odt_1
.pdf
Рисунок 1.5 – Блок-схема алгоритма 2.1 Ниже представлен исходный код данной программы на языке
программирования С sharp.
double[] array = { 19, 0, 23, 4, 0, 6, 7 }; double maxElement = array[0];
int maxIndex = 0;
for (int i = 1; i < array.Length; i++)
11
{
if (array[i] > maxElement)
{
maxElement = array[i]; maxIndex = i;
}
}
Console.WriteLine($"Номер максимального элемента массива: {maxIndex}");
int firstIndex = -1; int secondIndex = -1;
for (int i = 0; i < array.Length; i++)
{
if (array[i] == 0)
{
if (firstIndex == -1) firstIndex = i;
else
{
secondIndex = i; break;
}
}
}
double product = 1;
if (firstIndex != -1 && secondIndex != -1)
{
for (int i = firstIndex + 1; i < secondIndex; i++)
12
{
product *= array[i];
}
Console.WriteLine($"Произведение элементов между первым и вторым нулевыми элементами: {product}");
}
else
if (product == 1)
{
Console.WriteLine("Второго нуля в массиве нет");
}
double[] rearrangedArray = new double[array.Length]; int oddIndex = 0;
int evenIndex = 1;
foreach (var element in array)
{
if (oddIndex < array.Length)
{
rearrangedArray[oddIndex] = element; oddIndex += 2;
}
else
{
rearrangedArray[evenIndex] = element; evenIndex += 2;
}
}
13

Console.WriteLine("Преобразованный массив:"); foreach (var element in rearrangedArray)
{
Console.Write($"{element} ");
}
Результат работы программы представлен на рисунке 1.6.
Рисунок 1.6 — Результат работы программы 2.1
Задание 2.2:Дана матрица 5Х5. Вывести ее в верхнем треугольном виде (т.е. напечатать только элементы верхнего треугольника и именно в виде треугольника).
Словесное описание: А0)Начало
А1)matrix = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 1}, {1, 1, 1, 1, 1}, {6, 1, 1, 1, 2}, {2, 2, 2, 2, 2} };
А2)Для i от 0 до matrix.GetLength(0) с шагом 1, выполнить А3, иначе
А8.
А3)Для j от 0 до matrix.GetLength(1) с шагом 1, выполнить А4. Далее
А2.
А4)Если i <= j, то А5, иначе А6.
А5)Вывод элемента с индексами i,j + табуляция. А6)Вывод табуляция.
А7)Переход на новую строку. Возвращаемся к А3. А8)Конец.
Графический способ задания данного алгоритма в виде блок-схемы представлен на рисунке 1.7.
14

Рисунок 1.7 — Блок-схема алгоритма 2.2 Ниже представлен исходный код данной программы на языке
программирования С sharp. int[,] matrix = {
{1, 2, 3, 4, 5}, {6, 7, 8, 9, 1},
15

{1, 1, 1, 1, 1}, {6, 1, 1, 1, 2}, {2, 2, 2, 2, 2}
};
for (int i = 0; i < matrix.GetLength(0); i++) //строки
{
for (int j = 0; j < matrix.GetLength(1); j++) //столбцы
{
if (i <= j)
{
Console.Write(matrix[i, j] + "\t");
}
else
{
Console.Write("\t");
}
}
Console.WriteLine();
Результат работы программы представлен на рисунке 1.8
Рисунок 1.8 — Результат работы программы 2.2
1.3 Лабораторная работа №3. Функции
Задание 3.1: Даны четыре натуральных числа. Найти наибольший общий делитель (НОД) для этих четырех чисел.
Словесное описание:
16
А0)Начало.
А1)Вывод "Введите числа a, b, c, d через пробел:" А2)Ввод чисел через пробел.
А3)Если a + b > c или a + c > b или b + c > a, то А4, иначе А13. А4)Вызов функции TriangleArea. Далее А5.
А5)area1 = TriangleArea(a, b, c);
А6)Вывод площади триугольника из отрезков a,b,c. А7)area2 = TriangleArea(a, c, d);
А8)Вывод площади триугольника из отрезков a,c,d. А9)area3 = TriangleArea(b, c, d);
А10)Вывод площади триугольника из отрезков b,c,d. А11)area4 = TriangleArea(a, b, d);
А12)Вывод площади триугольника из отрезков a,b,d. Далее А14. А13)Вывод "Из данных отрезков невозможно построить треугольник.". А14)Конец.
Б0)TriangleArea Б1)p = (a + b + c) / 2;
Б2)return Math.Sqrt(p * (p - a) * (p - b) * (p - c)); Б3)TriangleArea
Графический способ задания данного алгоритма в виде блок-схемы представлен на рисунке 1.9
17

Рисунок 1.9 — Блок-схема алгоритма 3.1
18
Ниже представлен исходный код данной программы на языке программирования С sharp.
static double TriangleArea(int a, int b, int c)
{
double p = (a + b + c) / 2;
return Math.Sqrt(p * (p - a) * (p - b) * (p - c));
}
Console.WriteLine("Введите числа a, b, c, d через пробел:"); string[] input = Console.ReadLine().Split();
int a = int.Parse(input[0]); int b = int.Parse(input[1]); int c = int.Parse(input[2]); int d = int.Parse(input[3]);
if (a + b > c && a + c > b && b + c > a)
{
double area1 = TriangleArea(a, b, c);
Console.WriteLine($"Площадь треугольника из отрезков a, b, c:
{area1}");
double area2 = TriangleArea(a, c, d);
Console.WriteLine($"Площадь треугольника из отрезков a, c, d:
{area2}");
double area3 = TriangleArea(b, c, d);
Console.WriteLine($"Площадь треугольника из отрезков b, c, d:
{area3}");
double area4 = TriangleArea(a, b, d);
19

Console.WriteLine($"Площадь треугольника из отрезков a, b, d:
{area4}");
}
else
{
Console.WriteLine("Из данных отрезков невозможно построить треугольник.");
}
Результат работы программы представлен на рисунке 1.10
Рисунок 1.10 — Результат работы программы 3.1
Задание 3.2: Организовать бинарный поиск заданного числа в массиве (массив предварительно нужно отсортировать).
Словесное описание: А0)Начало
А1)Вывод "Введите размер массива:" А2)Вводим размер массива.
А3)Вывод "Введите {size} чисел для массива:"
А4)Для i от 0 до size с шагом 1, выполнить А5. Далее А7 А5)Вывод "Введите {i + 1} элемент массива:"
А6)Ввод элемента массива. Возвращаем А4. А7)Вывод "Введите число для бинарного поиска:" А8)Ввод числа для бинарного поиска. А9)Сортируем массив по возрастанию. А10)Вывод "Получившийся массив:"
А11)Для i от 0 до длинны массива с шагом 1, выполнить А12. А12)Вывод "Введите {i + 1} элемент массива:"
20