Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АТПбпз-16 (2 семестр) Информатика.rtf
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆
  1. Работа с массивами.

Массив - это набор объектов одного типа, у каждого из которых есть индекс (номер). Построение программ, оперирующих с элементами массивов – важнейшая часть техники программирования.

Элементы массива длины 20 могут иметь, например, индексы 1,2,...,20 или 0,1,2,...,19. Способ индексации, тип элементов, длина массива фиксируются в определении того типа, к которому принадлежит массив. Рассмотрим конкретный пример. Определение, имеющее вид

t=array [1..20] of real

это определение типа, имя которого t. Объектами типа t будут упорядоченные наборы по 20 элементов, имеющих тип real; диапазон изменения значения индекса - от 1 до 20. Это определение типа, предваренное служебным словом type, помещается в программу перед совокупностью описаний переменных. Пусть переменная а описана в программе как переменная типа t:

Var a: t;...

Тогда при выполнении программы значениями переменной а будут массивы длины 20, элементы которых имеют тип real. Для того, чтобы рассматривать эти элементы по отдельности, для них применяются обозначения a[1], a[2],...,a[20].

Переменная а - это переменная типа t, переменные a[1], a[2],...,a[20] - это переменные типа real. С переменными a[1], a[2],...,a[20] можно обращаться как с обычными переменными типа real (т.е. как с переменными-идентификаторами x, y, z и т.д.).Заключенный в квадратные скобки индекс - это не обязательно целое число, им может произвольное выражение со значением типа integer. Например, переменные a[i], a[2*i], a[2*i-1] удобно использовать для поочередного рассмотрения в цикле всех элементов массива, элементов массива, элементов, стоящих на четных и нечетных местах; здесь проявляется преимущество обозначений a[1], a[2],...,a[20] перед обозначениями a1, a2, ..., a20. Значение индекса должно лежать в указанном в определении типа диапазоне, в данном случае - в диапазоне от 1 до 20.

Пример7 В массиве А(N) найти максимальный элемент. Определить сколько раз он встречается в данном массиве.

  • Введём обозначения: Max - максимальный элемент массива;

K - количество максимальных элементов

  • Б

    • Листинг программы:

    Program Massiv1;

    Type t=array[1..50] of real;

    Var a:t;

    N, i,K: Integer;

    Max:Real;

    Begin Writeln(‘Введите N’);

    Readln(N);

    For i:=1 to N Do Readln(a[I]);

    K:=0; Max:=a[i];

    For i:=2 To N Do

    If Max<a[i] Then Max:=a[i];

    For I:=1 To N Do

    If Max=a[i] Then K:=K+1;

    Writeln(‘Макс. эл. мас:‘, Max:8:3);

    Writeln(‘Кол. макс. эл:',K:8);

    End.

    лок-схема:

IV Задания контрольных работ

Задание №1. Имеется четыре (A,B,C,D) числа. Необходимо ответить на вопрос: “Правда ли, что …?” (вопрос вы найдете в таблице вариантов). Ответ нужно вывести в виде текста – слов “Правда” или “Неправда”. Оформить протокол работы программы.

0

все числа положительные?

1

ни одно число не превышает число 9?

2

каждое из первых двух чисел не превышает больше каждого из последних двух?

3

среди чисел есть нечетные?

4

числа расположены в возрастающем порядке?

5

среди этих чисел нет равных?

6

точно два из чисел равны?

7

среди чисел есть и положительные и отрицательные?

8

первое число самое большое?

9

первое число меньше всех остальных?

10

среди чисел точно одно меньше нуля?

11

не все числа отрицательные?

12

все числа больше 0 и меньше 7?

13

все числа равны между собой?

14

среди этих чисел есть равные?

15

среди чисел есть кратные 3?

16

первое число не самое маленькое?

17

среди чисел есть кратные 4?

18

хотя бы два из чисел равны?

19

среди чисел нет кратных 5?

20

первое число самое большое, а последнее самое маленькое?

21

числа расположены в убывающем порядке?

22

первое число самое маленькое, а последнее самое большое?

23

среди чисел есть четные?

24

среди чисел точно одно меньше нуля?

25

точно два из трех чисел не равны между собой?

26

все числа отрицательные?

27

последнее число не самое маленькое?

28

среди чисел нет отрицательных?

29

имеется точно одно число, кратное 6?

30

сумма первых двух больше суммы вторых?

31

имеется хотя бы одно число не равное двум другим?

32

каждое из первых двух чисел больше каждого из последних?

33

не все числа положительны?

34

сумма первых двух чисел равна сумме вторых?

35

три числа из четырех - отрицательные?

Задание №2. Составить программу вычисления и выдачи на печать суммы (произведения) N элементов бесконечного ряда. Оформить проверку задания.

0

y=1-6+11-16+24-…

1

y=-2+5-8+11-14+…

2

y=60-53+46-39+32-…

3

y=-4+8-16+32-64+…

4

y=2-6+18-54+162-…

5

y=60-57+54-51+48-…

6

y=-18+20-22+24-26+…

7

y=85-80+75-70+65-…

8

y=42-40+38-36+34-…

9

y=-20+15-10+5-0+…

10

y=(-24)12(-6)3(-1,5)…

11

y=256(-64)16(-4)1…

12

y=(-3)6(-9)12(-15)…

13

y=4(-6)8(-10)12…

14

y=(-512)256(-128)64…

15

y=(-64)32(-16)8(-4)…

16

y=16(-8)4(-2)1…

17

y=3-5+7-9+11-…

18

y=50-40+30-20+10-…

19

y=3-9+27-81+243-…

20

y= 12+23+34+45+…

21

y=70-65+60-55+50-…

22

y=1(-3)9(-27)81…

23

y=1000(-100)10(-1)0,1…

24

y=(-1)4(-16)64(-256)…

25

y=10+41+82+163+…

26

y=-243+81-27+9-…

27

y=(-128)64(-32)16(-8)…

28

y=-20+18-16+14-12+…

29

y=(-10)8(-6)4(-2)…

30

y=125(-25)5(-1)0,2…

31

y=26+25+24+23+…

32

y=32(-16)8(-4)2…

33

y=32+33+34+36+…

34

y=(-2)4(-8)16(-32)…

35

y=-18+15-12+9-6+…

Задниеа №3. Дана функция . ЭВМ должна вычислить и напечатать значения этой функции для последовательных значений X=C,C+(B+1),C+2(B+1),C+3(B+1) и т.д. до тех пор, пока сумма Y+A+5 не станет отрицательной. Здесь A,B,C – три последние цифры номера зачетной книжки. Оформить проверку задания.

Указания к решению задачи. Условие задачи предварительно необходимо преобразовать, подставив в него значения цифр A,B,C. Например, пусть А=7, В=8, С=2.Тогда задача будет такова – производить вычисления функции Y=7-(X-2)2/9 до тех пор, пока Y+12 не станет отрицательным для X= 2, 11, 20, 29 и т.д. Как видим, здесь шаг изменения Х равен 9.

Задание №4. Имеется массив А из N произвольных чисел (A(N)), среди которых есть положительные, отрицательные и равные нулю. Используя оператор цикла, составить программу, выполняющую задачу в соответствии с вариантом. Оформить протокол работы программы.

0

Вычислить сумму всех четных положительных чисел.

1

Вычислить количество чисел, квадрат которых меньше 10.

2

Вычислить количество положительных и нулевых и сумму отрицательных.

3

Ответить на вопрос: правда ли, что среди чисел имеются отрицательные (ответ должен быть в виде слов “Да” или “Нет”).

4

Напечатать все числа из очереди, квадрат которых превышает 7, но меньше 50.

5

Вычислить произведение всех положительных чисел, меньших 20.

6

Суммировать числа до тех пор, пока не встретиться число 2. Напечатать получившуюся сумму. Если двойка не встретилась, напечатать текст “Двойки нет”.

7

Суммировать квадраты чисел до тех пор, пока сумма не превысит 40. Напечатать, на котором по счету число это произошло. Если оно не произошло вообще, напечатать текст “Числа слишком малы”.

8

Выяснить, каким по счету в очереди стоит число 3. Если троек несколько, нас интересует только первая из них. Если троек нет совсем, напечатать сообщение “Троек нет”.

9

Подсчитать количество положительных и отрицательных чисел и количество нулей.

10

Найти сумму и количество всех четных положительных элементов.

11

Найти номер последнего отрицательного элемента в последовательности.

12

Напечатать только те числа из массива, которые образуют растущую последовательность.

13

Суммировать числа до достижения значения 15. Напечатать сумму и сделать ее =0. Опять продолжить суммирование до 15. Снова напечатать сумму и т.д. до конца массива. Если сумма оказалась меньше, печатать фразу “Сумма <15”.

14

Напечатать только те числа из массива, которые больше предыдущего числа.

15

Напечатать только те числа из массива, которые образуют убывающие последовательности.

16

Складывать числа до встречи 0. Напечатать сумму. Снова суммировать до 0, напечатать новую сумму и т.д. до конца массива.

17

Найти сумму и количество всех нечетных положительных чисел.

18

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

19

Найти номер последнего положительного элемента в массиве.

20

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

21

Выяснить, есть ли одинаковые элементы в массиве. Ответ “Да” или “Нет”.

22

Найти максимальный четный элемент в массиве.

23

Найти произведение четных элементов, находящихся в диапазоне от 3 до 13.

24

Найти максимальное и минимальное нечетные числа и их среднее арифметическое.

25

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

26

Напечатать сумму элементов, предшествующих максимальному числу.

27

Найти номер максимального четного элемента в массиве.

28

Напечатать номера элементов, кратных одновременно двум и трем.

29

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

30

Найти произведение элементов, кратных 5.

31

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

32

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

33

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

34

Напечатать максимальное число из всех положительных чисел и его местоположение в массиве.

35

Найти, сколько раз встречается максимальное число в массиве.

Задание №5. Составить программу вычисления числового ряда для известного числа членов ряда N. Перед программированием следует выявить и написать необходимые аналитические соотношения. Оформить проверку задания.

0

Y=(7+35/1)(8-3-4/2)(9+33/3)(10-3-2/4)…

1

Y=(2+1/81)-(4-2/27)=(8+4/9)-(16-8/3)+…

2

Y=-(1/2-2/5)+(2/3+4/10)-(3/4-8/15)+(4/5+16/20)-…

3

Y=-(1/2-2/5)+(2/3+4/10)-(3/4-8/15)+(4/5+16/20)-…

4

Y=(2-1/27+4)(22/9-8)(2-3/3+16)(24/1-32)…

5

Y=(8+35/100)-(4+3-4/10)+(2+33/1)-(1+3—2/0,1)+…

6

Y=(3+1-1/81)(5-2+1/27)(7+3-1/9)(9-4+1/3)…

7

Y=(1+2-1/2)(-2+22/3)(3+2-3/4)(-4+24/5)…

8

9

Y=(7+34+1)(8-3-3+2)(9+32+3)(10-3-1+4)…

10

Y=21/(2+16)2-2/(-3+8)24/(4+4)2-8/(-5+2)…

11

Y=-1/(18+2)2/(2-4+4)-3/(32+6)4/(4-1+8)…

12

Y=(1/24+1)(2/23-2)(3/22+4)(4/21-8)…

13

Y=-8/(25-2)4/(24+4)-2/(23-5)1/(22+6)…

14

Y=(7+35/1)(8-3-4/2)(9+33/3)(10-3-2/4)…

15

16

Y=(1+24-8)(2-2-3-4)(4+22-2)(8-2-1-1)…

17

Y=(-1+2-1/81)(3-4+1/27)(-9+8-1/9)(27-16+1/3)…

18

Y=28/(3-16)2-4/(4+8)22/(5-4)2-1/(6+2)…

19

Y=(33-1)(3-2+2)(31-4)(3-0+8)…

20

21

Y=(2-1/2)(22/-5)(2-4/8)(28/11)…

22

Y=

23

Y=(-2+1/80)+(4-2/40)+(-8+3/20)+(-16-4/10)+…

24

Y=(2-4-8+1)(23-4+3)(2-2-2+5)(21-1+7)…

25

Y=(3-1/2)(42/5)(5-3/8)(64/-11)…

26

Y=-(20+1/1)+(18+2/3)-(16-3/5)+(14+4/7)-…

27

Y=(1+25/1)(10+2-4/2)(100+23/3)(1000+2-2/4)…

28

Y=(2/16+8)(2/8-10)(2/4+12)(2/4-14)…

29

Y=-(1/21+1)+(2/22-2)-(4/24+3)+(8/28-4)-…

30

Y=

31

Y=(1+2-1/2)(3+22/3)(5+2-3/4)(7+24/5)…

32

Y=(7+2/2)-(6-3/4)+(5+4/8)-(4-5/16)+…

33

Y=

34

Y=(-1+1/40)+(2-2/30)-(3+3/20)+(4-4/10)-…

35

Y=(-1/18-2)(-1/16+4)(-1/14-6)(-1/12+8)…

Указания к решению задачи. Пусть:

Сначала необходимо выписать все, наблюдаемые в ряду соотношения. Для этого введем переменные. Степень числа обозначим буквой А, знак при ней – Z, знак при числе пять – Z1, второе слагаемое в знаменателе – буквой В, а знак при нем – Z2, т.е.

тогда можем записать (справа показаны начальные значения переменных):

Y=1

Z=-1

A=1

Z1=-1

Z2=1

B=16

Теперь можно приступать к программированию. Однако, здесь возможны упрощения. Переменные Z, Z1, Z2 организуют знакочередование числовых последовательностей. Обратим внимание на то, что Z1 всегда равно Z. Это значит, что Z1 можно заменить на Z. Кроме того, замечаем, что поскольку В образует геометрическую прогрессию, знак можно включить непосредственно в выражение для В, т.е. В=-В/2, удалив переменную Z2. Окончательно запишем

Y=1

Z=-1

A=1

B=16

Алгоритм решения (для заданного числа N):

  1. Ввести значение N.

  2. Задать исходные значения переменных (Y=1, Z=-1, A=1, B=16).

  3. Вычислить очередное значение Y.

  4. Вычислить новые A, B, Z.

  5. Сделать приращение счетчика циклов (I=I+1).

  6. Если I N – возврат к пункту 3, иначе, завершение цикла и печать Y.

  7. Программировать можно только с оператором цикла FOR или без него по усмотрению студента.