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

Лаба 2

.docx
Скачиваний:
0
Добавлен:
27.05.2024
Размер:
147.71 Кб
Скачать

Лаба 2

Задание 1

Дан массив из N элементов (вещественные числа). Вычислить: 1) максимальный элемент массива; 2) сумму элементов массива, расположенных до последнего положительного элемента. Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a, b]. Освободившиеся в конце массива элементы заполнить нулями.

using System;

class Program

{

static void Main(string[] args)

{

double[] arr = { 1, 4.31, -7, -21.47, 31.123, 2.89, -143.191, 7.77, 8.04 };

// Нахождение макс. элемента

double max_elem = arr[0]; // мб, что первый эл. окажется макс.

for (int i = 1; i < arr.Length; i++)

{

if (arr[i] > max_elem)

{

max_elem = arr[i];

}

}

Console.WriteLine("Максимальный элемент в массиве: " + max_elem);

// Нахождение суммы элементов массива, расположенных до последнего "+" элемента

double sum_before_last_positive = 0;

int last_positive_index = -1; // индекс последнего положительного элемента (-1), если такого элемента нет)

for (int i = 0; i < arr.Length; i++)

{

if (arr[i] > 0)

{

last_positive_index = i;

}

if (last_positive_index == -1)

{

continue; // если положительный элемент еще не встретился - пропускаем

}

if (i < last_positive_index)

{

sum_before_last_positive += arr[i]; // берем в сумму все числа до последнего положительного

}

}

Console.WriteLine("Сумма элементов до последнего положительного элемента: " + sum_before_last_positive);

// Удаление элементов в интервале [a, b], освобождение конечных ячеек и заполнение их нулями

double a = -7.0; // задаем левую границу интервала

double b = 3.0; // задаем правую границу интервала

int shift = 0; // переменная для подсчета удаленных элементов

for (int i = 0; i < arr.Length; i++)

{

if (Math.Abs(arr[i]) >= a && Math.Abs(arr[i]) <= b)

{ // если элемент попадает в интервал, SKIP

shift++; //побитовый сдвиг

}

else

{ // если элемент не попал в интервал

if (shift > 0)

{

arr[i - shift] = arr[i]; // сдвигаем элементы на количество удаленных элементов

}

}

}

// ставим нули свободных ячеек

for (int i = arr.Length - shift; i < arr.Length; i++)

{

arr[i] = 0;

}

Console.WriteLine("Измененный массив:");

for (int i = 0; i < arr.Length; i++)

{

Console.Write(arr[i] + " ");

}

}

}

Задание 2

Дана матрица 5Х5. Построить одномерный массив В(5), состоящий из средних арифметических элементов строк.

int[][] matrix = new int[5][];

Random random = new Random();

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

{

matrix[i] = new int[5];

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

{

matrix[i][j] = random.Next(1, 101);

}

}

int[] B = new int[5];

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

{

int sum = 0;

B[i] = (int)matrix[i].Average();

}

Console.WriteLine("Исходная матрица:");

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

{

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

{

Console.Write(matrix[i][j] + " ");

}

Console.WriteLine();

}

Console.WriteLine("\nМассив В:");

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

{

Console.Write(B[i] + " ");

}

Соседние файлы в предмете Основы программирования