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

Массивы

.pdf
Скачиваний:
13
Добавлен:
02.06.2015
Размер:
247.89 Кб
Скачать

11

c.После цикла проверить условие: если текущий элемент меньше двух соседних элементов, то имени функции присвоить номер текущего элемента, иначе имени функции присвоить -1.

2.В разделе исполнения основной программы:

a.Вывести исходный массив.

b.Проверка условия: если результат функции local_min(mas,count) не равен -1, то вывести на экран номер первого локального минимума, иначе вывести на экран сообщение, что локальный минимум не найден.

Наберите функцию поиска номера первого локального минимума в массиве:

Function Local_min(m:array of integer;c:integer):integer;

Var i:integer; begin

for i:=1 to c-2 do

if (m[i]<m[i-1])and(m[i]<m[i+1]) then break;

if (m[i]<m[i-1])and(m[i]<m[i+1]) then Local_min:=i+1 else Local_min:=-1;

end;

Далее дополните раздел исполнения основной программы, вставив в нужные места следующие строки:

Writeln('4-поиск первого локального минимума');

. . .

4:begin output_mas(mas,count);

if local_min(mas,count)<>-1 then writeln('Номер первого локального минимума: ',

local_min(mas,count))

else writeln('Локальный минимум не найден');

readln; end;

Проверьте правильность работы, самостоятельно составьте блок-схему подпрограммы, после чего пригласите преподавателя для проверки.

12

Задания для самостоятельной работы (для каждого задания составить словесный алгоритм, нарисовать блок-схему и реализовать алгоритм в виде подпрограммы на языке Pascal. Если задание сводится к нахождению одного значения, то реализовать ее в виде функции, иначе – в виде процедуры. В основной программе предусмотрите вызов подпрограмм):

1. Сформировать и вывести целочисленный массив, содержащий N первых положительных нечетных чисел: 1, 3, 5, . . . .

2. Сформировать и вывести целочисленный массив, содержащий степени двойки от первой до N -й: 2, 4, 8, 16, . . . .

3. Сформировать и вывести массив, содержащий N первых членов

арифметической прогрессии: A, A+D, A+2·D, A+3·D, . . . (где A,D

первый член и разность данной прогрессии).

4.Сформировать и вывести массив, содержащий N первых членов геометрической прогрессии: A, A·D, A·D2, A·D3, . . . (где A, D – первый член и знаменатель данной прогрессии).

5.Сформировать и вывести целочисленный массив, первый элемент которого равен A, второй равен B, а каждый последующий элемент равен сумме всех предыдущих.

6.Вывести все элементы заданного массива в обратном порядке.

7.Вывести все содержащиеся в заданном массиве нечетные числа в порядке возрастания их индексов, а также их количество.

8.Вывести вначале все содержащиеся в заданном массиве четные числа в порядке возрастания их индексов, а затем — все нечетные числа в порядке убывания их индексов.

9.Вывести элементы массива с порядковыми номерами, кратными заданному числу K : AК, A, A, . . . . Условный оператор не использовать.

10.Вывести элементы массива с четными номерами в порядке возрастания номеров: A2, A4, A6, . . ., AN (где N-количество элементов массива). Условный оператор не использовать.

11.Вывести элементы массива с нечетными номерами в порядке убывания номеров: AN, AN−2, AN−4 , . . ., A1 (где N-количество элементов массива). Условный оператор не использовать.

12.Вывести вначале элементы массива с четными номерами (в порядке возрастания номеров), а затем — элементы с нечетными номерами (также в

порядке возрастания номеров): A2, A4, A6, . . .,A1, A3, A5, . . . . Условный оператор не использовать.

13.Вывести вначале элементы массива с нечетными номерами в порядке возрастания номеров, а затем — элементы с четными номерами в порядке

13

убывания номеров: A1, A3, A5, . . .,A6, A4, A2. Условный оператор не использовать.

14.Вывести элементы массива в следующем порядке: A1, AN, A2, AN−1 , A3, AN−2,. . . . (где N-количество элементов массива).

15.Вывести элементы массива в следующем порядке: A1, A2, AN, AN−1, A3, A4, AN−2, AN−3, . . . . (где N-количество элементов массива).

16.Вывести значение первого из элементов массива, который меньше последнего элемента. Если таких элементов нет, то вывести 0.

17.Вывести порядковый номер последнего из элементов массива, которые больше первого и меньше последнего элемента массива. Если таких элементов нет, то вывести 0.

18.Найти сумму элементов массива с номерами от K до L включительно.

19.Найти среднее арифметическое элементов массива с номерами от K до L включительно.

20.Найти сумму всех элементов массива, кроме элементов с номерами от K до L включительно.

21.Найти среднее арифметическое всех элементов массива, кроме элементов с номерами от K до L включительно.

22.Проверить, образуют ли элементы массива арифметическую прогрессию. Если образуют, то вывести разность прогрессии, если нет — вывести 0.

23.Проверить, образуют ли элементы массива геометрическую прогрессию. Если образуют, то вывести знаменатель прогрессии, если нет — вывести 0.

24.Проверить, чередуются ли в массиве четные и нечетные числа. Если чередуются, то вывести 0, если нет, то вывести порядковый номер первого элемента, нарушающего закономерность.

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

26.Найти минимальный элемент массива из элементов с четными номерами: A2, A4 , A6, . . . .

27.Найти максимальный элемент массива из элементов с нечетными номерами: A1, A3, A5, . . . .

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

29.Найти номера тех элементов массива, которые больше своего левого соседа, и количество таких элементов. Найденные номера выводить в по-

14

рядке их убывания.

30.Найти номер последнего локального максимума массива (локальный максимум — это элемент, который больше любого из своих соседей).

31.Найти максимальный из локальных минимумов массива (локальный минимум — это элемент, который меньше любого из своих соседей).

32.Найти минимальный из локальных максимумов массива (локальный максимум — это элемент, который больше любого из своих соседей).

33.Найти максимальный из элементов массива, не являющихся ни локальным минимумом, ни локальным максимумом (локальный минимум — это элемент, который меньше любого из своих соседей; локальный максимум

— это элемент, который больше любого из своих соседей). Если таких элементов в массиве нет, то вывести 0.

34.Найти количество участков, на которых элементы массива монотонно возрастают.

35.Найти количество участков, на которых элементы массива монотонно убывают.

36.Найти количество промежутков монотонности массива (то есть участков, на которых его элементы возрастают или убывают).

37.Найти элемент массива, который наиболее близок к заданному числу R (то есть такой элемент AK, для которого величина |AKR| является минимальной).

38.Найти два соседних элемента массива, сумма которых максимальна, и вывести эти элементы в порядке возрастания их индексов.

39.Найти два соседних элемента массива, сумма которых наиболее близка к заданному числу R, и вывести эти элементы в порядке возрастания их индексов.

40.Выяснить является ли массив перестановкой, то есть содержит все числа от 1 до N в любом порядке (N – количество элементов массива). Если это так, то вывести 0; в противном случае вывести номер первого недопустимого элемента.

41.Найти количество инверсий в заданном массиве, то есть таких пар элементов AI и AJ, в которых большее число находится слева от меньшего:

AI> AJ при I < J.

42.Поменять местами элементы двух массивов одинакового размера и вывести их на экран.

43.Из заданного массива А сформировать новый массив B такого же размера, элементы которого определяются следующим образом: если AK<5, то BK= 2·AK, , в противном случае BK =AK/2.

15

44.Из заданных массивов A и B сформировать новый массив C такого же размера, каждый k-ый элемент которого равен максимальному из элементов AK и BK.

45.Из заданного массива переписать в новый целочисленный массив все четные числа из исходного массива (в том же порядке) и вывести размер полученного массива и его содержимое.

46.Из заданного массива переписать в новый целочисленный массив все элементы с нечетными порядковыми номерами (1, 3, . . .) и вывести размер полученного массива и его содержимое. Условный оператор не использовать.

47.Из заданного массива переписать в новый целочисленный массив все элементы с порядковыми номерами, кратными трем (3, 6,. . .), и вывести размер полученного массива и его содержимое. Условный оператор не использовать.

48.Из заданного массива переписать в новый целочисленный массив того же размера вначале все элементы исходного массива с четными номерами, а затем — с нечетными. Условный оператор не использовать.

49.Из заданного массива cформировать новый массив того же размера по следующему правилу: k-ый элемент нового массива равен сумме элементов заданного массива с номерами от 1 до k.

50.Из заданного массива сформировать новый массив того же размера по следующему правилу: k-ый элемент нового массива равен среднему арифметическому элементов заданного массива с номерами от 1 до k.

51.Из заданного массива сформировать новый массив того же размера по следующему правилу: k-ый элемент нового массива равен среднему арифметическому элементов заданного массива с номерами от k до N (где N – количество элементов в массиве).

52.Из заданного массива сформировать два новых массива: в первый массив записать все положительные элементы исходного массива, во второй массив — все отрицательные (сохраняя исходный порядок следования элементов). Вывести размер и содержимое массива сформированных массивов.

53.Из заданных двух массивов, элементы которых упорядочены по возрастанию, сформировать результирующий массив, включающий все элементы исходных массивов, расположенные по возрастанию.

54.Преобразовать заданный массив, увеличив каждый его элемент на исходное значение элемента с заданным номером k.

55.Увеличить все четные числа, содержащиеся в массиве, на исходное значение первого четного числа. Если четные числа в массиве отсутствуют, то

16

оставить массив без изменений.

56.Увеличить все нечетные числа, содержащиеся в массиве, на исходное значение последнего нечетного числа. Если нечетные числа в массиве отсутствуют, то оставить массив без изменений.

57.В заданном массиве поменять местами минимальный и максимальный элементы.

58.В заданном массиве с четным количеством элементов поменять местами его первый элемент со вторым, третий — с четвертым и т.д.

59.В заданном массиве с четным количеством элементов поменять местами первую и вторую половины массива.

60.В заданном массиве переставить в обратном порядке элементы массива, расположенные между k-ым и j-ым элементами, включая эти элементы (k и j задаются пользователем).

61.В заданном массиве переставить в обратном порядке элементы массива, расположенные между k-ым и j-ым элементами, не включая эти элементы (k и j задаются пользователем).

62.Обнулить элементы массива, расположенные между его минимальным и максимальным элементами (не включая минимальный и максимальный элементы).

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

64.Обнулить все локальные максимумы массива (то есть числа, большие своих соседей).

65.Возвести в квадрат все локальные минимумы массива (то есть числа, меньшие своих соседей).

66.Заменить каждый элемент массива на среднее арифметическое этого элемента и его соседей.

67.Осуществить сдвиг элементов массива вправо на одну позицию (исходное значение последнего элемента будет потеряно). Первый элемент полученного массива сделать равным 0.

68.Осуществить сдвиг элементов массива влево на одну позицию (исходное значение первого элемента будет потеряно). Последний элемент полученного массива сделать равным 0.

69.Осуществить сдвиг элементов массива вправо на K позиций (исходное значение K последних элементов будет потеряно). Первые K элементов полученного массива сделать равными 0.

70.Осуществить сдвиг элементов массива влево на K позиций (исходное зна-

17

чение K первых элементов будет потеряно). Последние K элементов полученного массива сделать равными 0.

71.Осуществить циклический сдвиг элементов массива вправо на одну позицию (при этом последний элемент перейдет на место первого).

72.Массив, где все элементы, кроме первого, упорядочены по возрастанию, сделать упорядоченным, переместив первый элемент на новую позицию.

73.Массив, все элементы которого, кроме последнего, упорядочены по возрастанию, сделать упорядоченным, переместив последний элемент на новую позицию.

74.Удалить из массива элементы с номерами от K до L включительно и вы-

вести размер полученного массива и его содержимое.

75.Удалить из массива все нечетные числа и вывести размер полученного массива и его содержимое.

76.Удалить из массива все элементы с четными номерами (2, 4, . . .). Условный оператор не использовать.

77.Удалить из массива все элементы с нечетными номерами (1, 3, . . .). Условный оператор не использовать.

78.Удалить из массива все соседние одинаковые элементы, оставив их первые вхождения.

79.Удалить из массива все одинаковые элементы, оставив их первые вхождения.

80.Удалить из массива все одинаковые элементы, оставив их последние вхождения.

81.Удалить из массива все элементы, встречающиеся менее трех раз, и вывести размер полученного массива и его содержимое.

82.Удалить из массива все элементы, встречающиеся более двух раз, и вывести размер полученного массива и его содержимое.

83.Удалить из массива все элементы, встречающиеся ровно два раза, и вывести размер полученного массива и его содержимое.

84.Перед элементом массива с порядковым номером K вставить новый элемент с нулевым значением.

85.После элемента массива с порядковым номером K вставить новый элемент с нулевым значением.

86.Вставить элемент с нулевым значением перед минимальным и после максимального элемента массива.

87.Перед элементом массива с номером K вставить M новых элементов с нулевыми значениями.

88.После элемента массива с номером K вставить M новых элементов с ну-

18

левыми значениями.

89.Перед каждым положительным элементом массива вставить элемент с нулевым значением.

90.После каждого отрицательного элемента массива вставить элемент с нулевым значением.

91.Элементы массива, кратные заданному числу, расположить в порядке возрастания, оставив остальные элементы на своих местах.

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

93.Элементы массива, значения которых входят в заданные пределы, расположить в порядке возрастания, оставив остальные элементы на своих местах.

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

95.Элементы массива с нечетными значениями расположить их в порядке убывания модулей, оставив остальные элементы на своих местах.

96.Нулевые элементы переставить в начало массива, а остальные расположить в порядке возрастания.

97.Положительные элементы массива расположить в порядке убывания, оставив остальные элементы на своих местах.

98.Отрицательные элементы массива расположить в порядке возрастания, оставив остальные элементы на своих местах.

99.Элементы массива с четными значениями расположить в порядке возрастания, оставив остальные элементы на своих местах.

100.Ненулевые элементы расположить в порядке убывания модулей, оставив остальные элементы на своих местах.