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

Информатика,методичка

.pdf
Скачиваний:
85
Добавлен:
20.04.2015
Размер:
626.21 Кб
Скачать

Продолжение приложения В

4. Массивы

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

Различают одномерные массивы (1 индекс) – они используются для представления векторов и двумерные массивы (2 индекса) – они используются для представления матриц.

Переменные типа массив объявляются следующим образом:

Var

A:array [1..10] of integer; – одномерный массив из 10 целых чисел,

B:array [1..20] of real; – одномерный массив из 20 вещественных чисел,

C:array [1..4,1..7] of integer; – двумерный массив из 28 целых чисел.

При описании массива используются зарезервированные слова:

ARRAY массив OF из

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

4.1. Вычислить значения функции z= (xi+ai ) / 2 , если xi и ai – элементы массивов, состоящие из 40 элементов каждый.

4.2.Записать в массив x , состоящий из 20 элементов, нули.

4.3.Вычислить значения функции, если ai – элементы массива:

ai=ai , если ai>0 ai=0, если ai 0.

4.4.Вывести на печать положительные элементы массива.

4.5.Вывести на печать первый отрицательный элемент массива и его порядковый номер, полагая, что в массиве есть хотя бы один отрицательный элемент.

4.6.Вывести на печать номера элементов массива, удовлетворяющих условию 0<ai<1.

4.7. Вычислить z=3 a b c / 3 , где

a ,b ,c

- элементы массивов,

i i i

i i i

 

состоящие из 20 элементов каждый.

 

 

4.8.Вывести на печать элементы массива кратные трем.

4.9.Вывести на печать номера точек, лежащих в круге радиусом r . Координаты точек заданы массивами (x1,x2 ,...,x10 ),(y1,y2 ,..,y10 ).

41

Продолжение приложения В

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

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

номер.

4.12.Найти минимальное значение элемента массива из нечетной позиции.

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

номер.

4.14.Дан массив, состоящий из 30 элементов, найти второй положительный элемент.

4.15.Дан массив, состоящий из 50 элементов, найти предпоследний нечетный элемент.

4.16.В одномерном массиве перенести элемент, стоящий на первом месте

вконец массива.

5.Характерные приемы алгоритмизации задач

Рассмотрим приемы, наиболее часто используемые при решении практических задач.

Вычисление в цикле с несколькими одновременно изменяющимися параметрами: на практике часто встречаются задачи, в которых необходимо использовать несколько параметров цикла, изменяющихся одновременно. Цикл с несколькими одновременно изменяющимися параметрами организуется по схеме, аналогичной схеме организации цикла с одним параметром. Для остальных параметров перед циклом необходимо задавать их начальные значения, а внутри его вычислять текущие.

Начало

a, h, y

x =a

i=1..20

z =x yi/(x+yi)

z

x=x+h

конец

Рис. В.7

Начало

x

i=1..50

zi= (xi2+1)/i

z

конец

Рис. В.8

42

Начало

x

z=0

i=1..20

z=z+xi2/i

z

конец

Рис. В.9

Продолжение приложения В

5.1.Вычислить значение функции z= (xi+a) / 2 , если xi являются элементами массива, a изменяется от 2 с шагом 0,5. Считать xi+a>0 .

5.2.Вычислить значение функции z=(a+b+ci ) / i, если a изменяется от 0 до 1 с шагом 0,1, b изменяется от 1 до 3 с шагом 0,2, ci – элементы массива.

5.3. Вычислить значения функции u=(xi+y) / z2i 1 , если xi – массив (x1,x2 ,..,x50 ), zi – массив (z1,z2 ,..,z100 ), а y изменяется от 1 с шагом 0,25.

5.4. Вычислить значение функции z=xyi /(x+yi ), если x изменяется одновременно с yi от начального значения a с шагом h , где yi являются элементами массива (y1,y2 ,...,y20 ).

Здесь в цикле, выполняемом 20 раз, изменяются два параметра: простая переменная x и i индекс переменной y . Схема алгоритма решения этой

задачи представлена на рис. В.7, где блок 4 задает закон изменения параметра i от 1 до 20 с шагом 1, блок 3 – перед циклом начальное значение параметра x , а блок 7 вычисляет новое значение параметра x .

5.5. Вычислить значения функции z=x xy , где x изменяется от 1 с

шагом 0,1 до 2, y изменяется от y0 с шагом h . Считать y>0 . 5.6. Вычислить и вывести на печать значения членов ряда

x+h

,

x+2h

,

x+3h

,...,

x+nh

,...,

x+20h

.

3

 

 

2n+1

 

5

7

 

41

 

5.7. Вычислить и вывести на печать значения членов ряда

x0+ x ,x0+3 x ,...,x0+( 2n 1) x ,... .

n0+3 n n0+5 n n0+( 2n+1) n

Последнее значение знаменателя принять равным m.

Запоминание результатов: если результатом вычислений является значение простой переменной, то для записи в памяти ЭВМ выделяется одна ячейка памяти. В том случае, когда в процессе вычислений значение переменной изменяется, то в памяти после окончания вычислений остается лишь последнее значение результата. Чтобы записать все вычисленные значения, нужно выделить для их хранения необходимое количество ячеек памяти (массив), а текущие результаты обозначить переменной с индексом.

43

Продолжение приложения В

5.8. Вычислить и запомнить значения функции

z

=

(x2

+1) / i ,

 

i

 

i

 

где xi – элементы массива. Схема алгоритма представлена на рис. В.8. В схеме блок печати стоит за циклом, так как на печать выводится массив Z .

5.9. Вычислить и запомнить

значения функции

z=aebx cx2

при

изменении аргумента x от 0 до 2 с шагом 0,1.

 

zi=(xi+yi ) / 2,

 

5.10. Вычислить и запомнить значения функции

где

x,y – массивы из 45 элементов каждый.

 

 

 

5.11. Вычислить и запомнить значения функции

 

 

yi=xi ,

если

xi 0;

 

 

yi=0,

если

xi 0;

 

 

-1, если xi 0.

где xi – элементы массива из 20 элементов.

5.12. Записать положительные элементы массива (x1,x2 ,...x30 ) подряд в массив Y .

5.13.Переписать в массив Y элементы массива (x1,x2 ,...x30 )в обратном

порядке.

5.14.Записать в массив Y подряд номера положительных элементов

массива (x1,x2 ,...x30 ).

5.15. Вычислить

значение функции y=n sin( x ) cos(n x ), если x

изменяется от x0 до

xm с шагом h. Записать в массив Z подряд значения

функции, удовлетворяющие условию y 0 1.

5.16.Записать подряд в массив Bэлементы массива (x1,x2 ,...x30 ), имеющие четные индексы.

5.17.Записать подряд в массив Bэлементы массива (x1,x2 ,...x30 ), стоящие на четных местах, а элементы, стоящие на нечетных местах запомнить

вмассиве C .

5.18.Запомнить в массиве Z положительные значения yдля монотонно

убывающей функции y= x3+ax2+bx+c , если x изменяется от 0 с шагом

0,1 до 10.

Отрицательные значения функции не вычислять. Считать, что функция имеет хотя бы один отрицательный элемент.

44

Продолжение приложения В 5.19. Переписать положительные элементы массива (x1,x2 ,...x30 )в

массив Z , а отрицательные – в массив Y . Элементы в массивах располагать подряд.

5.20. Запомнить в массиве A значения n, при которых z>0 для знакочередующейся функции z=sin(n x+ ), а в массиве B – значения n,

при которых z 0 (n=1,2,3,..,10 ).

5.21. Переписать элементы главной диагонали матрицы A(n n) в одномерный массив B, считая n 30 .

Вычисление суммы и произведения: если необходимо вычислить сумму значений некоторой функции y= f(x) при различных значениях аргумента,

целесообразно организовать цикл, в котором надо предусмотреть не только вычисление значений функции, но и накопление суммы путем прибавления полученных слагаемых к сумме всех предыдущих слагаемых. Формула,

используемая для накопления суммы, имеет вид zn=zn 1+yn . Поскольку

надобности в запоминании значений всех слагаемых и промежуточных сумм нет, в качестве z и yнужно использовать простые переменные и накопление суммы вести в цикле по формуле z=z+y, где знак «=» означает присваивание

значения. Если начальное значение z предварительно приравнять к нулю, то

после первого выполнения цикла значение z будет равно первому значению функции.

Аналогично накапливается и произведение с той лишь разницей, что для его накопления используется формула z=zy, а начальное значение

произведения должно быть равно единице.

5.22. Вычислить значение функции. Схема алгоритма решения этой задачи представлена на рис. В.9. Блок 3, задающий начальное значение суммы стоит перед циклом, в котором накапливается эта сумма. Блок 5 вычисляет значение слагаемого и накапливает сумму. Поскольку результат решения этой задачи одно число, блок печати стоит за циклом и выполняется один раз.

5.23.Вычислить произведение положительных элементов массива. Схема алгоритма решения задачи представлена на рис.В.10.

Значения сомножителей вычислять не требуется, поскольку они уже имеются в массиве. Однако прежде чем накапливать произведение, надо проверить, является ли сомножитель положительным (блок 5). Блок 3 задает начальное значение произведения, равное единице. В одной из ветвей этого процесса стоит блок 6, осуществляющий накопление произведения. При

невыполнении условия xi>0 никаких действий не предусматривается, а осуществляется переход к концу цикла.

45

Продолжение приложения В

20

i x , если x

5.24. Вычислить значения функции z sin x /

i 1

 

изменяется от 0 с шагом h одновременно с i.

 

15

5.25. Вычислить значения функции z ( n i ) / i . i 1

5.26. Вычислить сумму положительных элементов массива (x1,x2,…,x55). 5.27. Вычислить среднее арифметическое элементов массива.

5.28. Вычислить среднее арифметическое отрицательных элементов массива, полагая, что в массиве есть отрицательные значения.

5.29. Вычислить среднее геометрическое положительных элементов массива, имеющих четные индексы. Если таких элементов нет, то вывести на печать признак 0.

5.30. Вычислить среднее геометрическое элементов массива, удовлетворяющих условию yi>a, считая, что в массиве есть элементы, для которых выполняется это условие.

5.31.Подсчитать количество элементов целочисленного массива, кратных

трем.

5.32.Для целочисленного массива определить, является ли сумма его элементов четным числом, и вывести на печать ДА или НЕТ.

Начало

x

z =1

 

i=1..100

нет

xi >0

 

да

z=z xi

z

конец

Рис. В.10

 

Начало

Начало

 

x,

a, n

 

y=1, z=1, n=1

y=a1

 

y=y (x)2/2n(2n-1)

i=2, n+1

 

 

 

 

y=y x+ai

 

z=z+y

 

 

n=n+1

y

 

 

да

y >

 

 

конец

 

нет

 

 

 

z

 

 

конец

 

 

Рис. В.11

Рис. В.12

 

46

 

Продолжение приложения В

5.33.Подсчитать для массива количество элементов, ближайшим целым числом для которых является 1.

5.34.Вычислить сумму четных и сумму нечетных чисел натурального ряда

от 1 до N.

5.35.Вычислить сумму элементов массива, стоящих на четных местах.

5.36.Вычислить сумму 20 первых элементов ряда

 

 

x2

 

x19

19

xi

 

S=1+x+

 

+...+

 

=1+

 

.

2

19

i

 

 

 

i 1

 

Для определения

xi использовать прием накопления произведения, т. е.

xi=xi 1x .

 

 

 

 

 

элементов S массива

5.37. Вычислить

среднее

арифметическое

(a1,a2 ,...,a80 ), удовлетворяющих условию 1 ai 2 . Если таких элементов нет, то считать S=0.

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

5.39.Вычислить сумму элементов главной диагонали матрицы.

5.40.Вычислить значение функции z=n!.

5.41.Вычислить сумму членов ряда

 

x2

 

x4

 

x20

10

x2i

 

z=1+

 

+

 

+...+

 

=1+

 

.

2!

4!

20!

( 2i )!

 

 

 

i 1

 

Для вычисления значения члена ряда использовать рекуррентную формулу

yn=yn 1x2 / 2n( 2n 1) .

5.42. Вычислить сумму членов ряда

 

x3

x5

 

 

 

n x2n 1

 

 

 

 

 

x21

z=1 x+

 

 

 

+...+( 1)

 

 

+...

 

 

.

3!

5!

( 2n 1)!

21!

Для определения значения члена ряда использовать формулу

 

 

 

y

=y

 

 

x2

 

 

.

 

 

 

 

 

 

n 2n( 2n+1)

 

 

 

 

 

 

 

 

n 1

 

 

 

 

 

 

Начальное значение z=1 x,

y x.

 

 

 

 

 

 

 

 

5.43. Вычислить значение функции cm=

 

n!

 

=n m m i .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

m!(n m)!

 

i 1 i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

47

 

 

 

 

 

 

 

 

 

Продолжение приложения В

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

функции z=cos(n x+a)sin(n x a).

5.45.Вычислить приближенное значение функции Бесселя

 

 

x

2k n

 

x

n

x

2k n

 

100

( 1)k

 

 

 

 

 

 

100

1 k

 

 

 

 

 

2

 

 

 

2

 

 

 

 

2

 

.

J( x )

 

 

 

 

 

 

 

 

 

 

 

 

 

k!( n k )!

 

n!

k!( n k )!

k 0

 

 

 

k 1

 

Для определения n! использовать отдельный цикл, а слагаемого –

рекуррентную формулу

yk = yk 1 (x / 2 )2

. В качестве начальных значений

 

 

 

 

k(n+k)

 

 

 

(x / 2 )n .

суммы и слагаемого использовать член ряда при k=0 , равный

 

 

 

 

 

 

 

 

 

 

 

 

n!

 

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

5.46. Вычислить сумму членов ряда

 

x

2

 

 

x

4

 

x

2n

 

n

x

2n

z=1

 

 

+

 

...+( 1)n

 

+...=1+ 1

 

 

 

 

 

 

 

 

2n !

2!

4!

( 2n )!

n 1

 

с точностью до члена ряда, меньшего . В целях уменьшения затрат времени на вычисление значения текущего члена ряда использовать рекуррентную формулу.

Схема алгоритма решения этой задачи представлена на рис. В.11. Блок 3 задает начальное значение y , равное 1, начальное значение суммы, равное члену ряда с номером 0, так как вычислять его нет надобности, и начальное значение параметра цикла. В цикле блок 4 вычисляет значение текущего члена ряда, блок 5 накапливает сумму, блок 6 изменяет параметр цикла. Блок 7 проверяет условие повторения цикла и осуществляет переход к началу цикла,

если y> , или выход из него в противном случае.

5.47. Вычислить сумму членов ряда с точностью до члена ряда, меньшего, используя рекуррентную формулу.

z=1+x+x2 +...+ xn +...

2! n!

48

Продолжение приложения В

5.48. Вычислить сумму членов ряда

z=1+ mx +m(m 1)x2+m(m 1)(m 2 )x3+...

(m+1)! (m+2 )! (m+3 )!

с точностью до члена ряда, меньшего . Для определения текущего значения

члена ряда использовать рекуррентную формулу yn= yn 1

x(m n+1)

,

n+m

 

 

 

 

 

 

 

 

где n – номер члена ряда. Начальное значение y принять равным

1

.

 

 

 

5.49. Вычислить сумму членов ряда

 

 

 

m!

 

 

 

 

 

 

 

y=

1

+

2

+...+

n

+...

 

 

 

 

 

 

 

 

 

 

 

 

2 3

3 4

(n+1)(n+2 )

 

 

 

сточностью до члена ряда, меньшего 10-4.

5.50.Вычислить сумму членов ряда

z=cosx+cos2x4 +cos3x9 +...+cosn2nx+...

5.51. Вычислить сумму членов ряда

 

 

 

 

3

 

5

 

 

2n 1

 

 

z=2

x 1

(x 1)

 

(x 1)

 

 

(x 1)

 

 

 

 

+

 

+

 

+...+

 

 

 

+...

 

 

3

5

 

2n

1

 

 

 

 

 

 

 

 

x+1

3(x+1)

 

5(x+1)

( 2n+1)(x+1)

 

 

сточностью до члена ряда, меньшего 10-6.

5.52.Вычислить сумму членов ряда

y=cos2x

+cos4x

+...+

cos2nx

+...

 

1 3

3 5

 

( 2n 1)( 2n+1)

сточностью до члена ряда, меньшего 10-4.

5.53.Вычислить сумму членов ряда

y=1xn+21 xn 1+...+n1 x+n+11+n+12 x 1+...

с точностью до члена ряда, меньшего 10-6. Для определения текущего члена ряда использовать рекуррентную формулу.

Вычисление полинома: для вычисления полинома n-й степени y=a1xn+a2xn 1+...+anx+an 1 удобно использовать формулу Горнера

y=( ...((a1x+a2 )x+a3 )x+...+an )x+an 1 .

49

Продолжение приложения В

Если выражение стоящее внутри скобок, обозначить yi , то значение выражения в следующих скобках можно вычислить, используя рекуррентную

формулу

yi 1= yi x+ai 1 .

Значение

полинома yполучается

после

повторения

этого процесса

в цикле n

раз. Начальное значение

y1

целесообразно взять равным a1 , а цикл начинать с i=2. Если обозначить y

простой переменной, то схема примет вид, показанный на рис. В.12. Все коэффициенты полинома и свободный член, как правило, сводятся в массив,

состоящий из n+1 элементов (n порядок полинома). Если полином не

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

5.54. Вычислить значение многочлена y=2x8 x6 +4x5 5x2+6x+1,

используя формулу Горнера. Коэффициенты полинома удобно представить массивом (2; 0; -1; 4; 0; 0; -5; 6; 1). Порядок полинома n равен 8. Схема алгоритма будет аналогична схеме алгоритма, представленной на рис. В.12.

5.55. Вычислить значение функции

sin x=c1x9+c2x7+c3x5+c4 x3+c5x+x,

используя формулу Горнера

sin x=((((c1x2+c2 )x2+c3 )x2+c4 )x2+c5 )x+x ,

где c1,c2 ,...,c5 – элементы массива.

5.56. Вычислить значение многочлена, используя формулу Горнера.

z=2x12 4,5x10+x9+3x7 0,5x4 x2+1.

5.57. Вычислить значение полинома:

z=1x8+2x7+3x6 +4x5+5x4+6x3+7x2+8x+9 .

Так как коэффициенты полинома – числа натурального ряда, то сводить их в массив не имеет смысла. Вычисление их целесообразно производить в процессе решения. Тогда формула для вычисления текущего значения

полинома будет иметь вид zn=zn 1x+n .

5.58. Вычислить значение s=(1+x)8 , используя формулу Горнера

 

 

...

1 x+1 2 x+1

 

 

s=

3 x+...+1 8x+1.

 

 

 

8

7

 

6

 

 

 

Множитель, на который умножается любая скобка, можно представить как

hi=ix /(m i+1), где m=8 .

50