Обработка одномерных массивов 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Обработка одномерных массивов



Как было указано выше, в Вasic-программе массив дол­жен быть опи­сан с помощью оператора DIM(N), в результате работы которого резервиру­ется па­мять в объеме N ячеек. Для обра­ботки элементов массива необходимо задать числовые зна­чения всем его элементам. Это может быть сделано в ре­зультате ввода числовых значений последовательно в каждую ячейку па­мяти операто­ром INPUT или оператором READ из блока DATA. Кроме того, элементы данных могут вычисляться в соот­ветствие с алгоритмом или гене­рироваться датчиком случайных чисел с помощью процедуры RND. После заполнения числовой инфор­мацией области памяти элементы массива обра­батываются в соответствие с алгоритмом.

Пусть описан массив Х(10). Обработка массива, как правило, осуществляется с помо­щью операто­ров цикла, значение управляющей переменной слу­жит указателем текущего номера элемента. Когда указатель при­нимает i-е значение, рассматривается элемент массива с номе­ром i и значением Х(i).

Пример: N

Вычислить значение функции: G = max { Хi }+ ∏ Хi

Xi > 2 i=1

 

10 INPUT N

20 DIM X(N)

30 P=1

40 FOR I=1 TO N

50 INPUT X(I): NEXT I

60 FOR I=1 TO N

70 IF X(I)>2 THEN P=P*X(I)

75 NEXT I

80 MAX=X(1)

90 FOR I=1 TO N

100 IF X(I)> MAX THEN MAX=X(I)

110 NEXT I

120 PRINT “ X “

130 FOR I=1 TO N

140 PRINT X(I);

150 NEXT I

160 PRINT

170 PRINT “ G= “; MAX+P

180 END

 

В строках 40-50 описан цикл ввода элементов массива по запросу с дисплея.

В строках 60-75 программы - цикл накопления произведения элементов мас­сива, удовлетворяющих условию Хi> 2. Начальное значение произведе­ния Р=1.

В строках 80-110 реализуется поиск максимального эле­мента среди эле­ментов массива Х. В операторе 80 в качестве претен­дента на максимальное значение фиксируется 1-й эле­мент мас­сива.

Строка 120 - печать заголовка массива.

Операторы в строках 130 - 150 реализуют вывод в строку элементов мас­сива Х.

Оператор PRINT без параметров в строке 160 обеспечивает пропуск строки и установку курсора на первую позицию следующей строки.

В строке 170 выводится значение искомого выражения под име­нем G.

Использование вложенных циклов при работе с индексированной

Переменной

Циклический процесс может иметь так называемые вложен­ные циклы, ко­гда циклический фрагмент программы может со­держать другой цикличе­ский фрагмент. В таком случае первый из них называют внешним, второй – внутрен­ним. При организации таких процессов необходимо сле­дить, чтобы циклы не пересека­лись, цикл, открытый первым, должен быть закрыт по­следним.

Чаще всего вложенные циклы используются при работе с матрицами - таблицами, состоящими из М строк и N столбцов. Необходимо учесть, что при организации вложен­ных циклов чаще изменяется значение управляющей перемен­ной во внутреннем цикле.

Например, для просмотра элементов строк матрицы необхо­димо фик­си­ро­вать строку во внешнем цикле и просматривать элементы столбцов внутри этой строки во внутреннем цикле. И, наоборот, для просмотра элементов столбцов необходимо фиксировать во внешнем цикле столбец и во внутрен­нем цикле пе­ребирать элементы строк в этом столбце.

Например: вычислить элементы квадратная матрицы A(N,N) размерно­сти N по формулe А(I,J)=(I-1)*(3)j-2 и значение выраже­ния

N

G = 1 + ∑ Xi,

i=1

где компоненты вектора Х - средние арифметические значения элементов столбцов матрицы А.

10 INPUT N

20 DIM A(N,N), X(N)

25 PRINT " исходная матрица A "

30 FOR I=1 TO N

40 FOR J=1 TO N

50 A(I,J)=(I-2)*3^(J-1)

55 PRINT A(I,J);

60 NEXT J

70 PRINT

80 NEXT I

90 FOR J=1 TO N

100 X(J)=0

110 FOR i=1 TO N

120 X(J)=X(J)+A(I,J)

130 NEXT I

140 X(J)=X(J)/N: S=S+X(J): NEXT J

150 PRINT “вектор X - средние арифметические элементы столбцов “

160 FOR I=1 TO N

170 PRINT X(I):; NEXT I: PRINT: PRINT “ значение функции G= “; 1+S

 

В операторах 25-55 под заголовком “исходная матрица A” выводятся вы­численные в этом цикле элементы матрицы А в виде квадратной таблицы, со­стоящей из N строк и N столбцов.

Вектор Х должен быть образован из средних арифметиче­ских значе­ний элементов столбцов, поэтому имеет смысл внеш­ний цикл организовать по столбцам, внутренний – по строкам выбранного столбца. При J=1 фик­сиру­ется 1-й столбец и вычис­ляется сумма элементов строк в этом столбце

Х(1)=А(1,1)+А(2,1)+… +А(N,1) и т.д. для I=2, N

После окончания работы внешнего цикла эта сумма усред­няется, и, та­ким образом, в компоненте X(1) оказывается сред­нее арифметическое эле­ментов 1-го столбца, в Х(2) – 2-го и т.д. Переменная с именем S, начальное значение S которой равно 0, используется для вычисления суммы элементов массива Х.

В операторах 150-160 выводятся на экран компоненты век­тора X в строку под заголовком “вектор Х - средние арифмети­ческие элементы столбцов”.

Оператором PRINT “ значение функции G= “; 1+S выводится значение выражения.

 

ЗАДАНИЯ ДЛЯ ЛАБОРАТОРНЫХ И САМОСТОЯТЕЛЬНЫХ РАБОТ

Задание 1. Составить блок-схему алгоритма и программу вычисления функций:

 

 

1. 2.
3. 4.
  5.   6.
7.   8.
  9.   10.  
11. 12.
13.     14.
  15.   16.
  17.     18.
19. 20.
21. 22.  

 

Задание 2. Составить блок-схему алгоритма и программу

разветвляющегося процесса:

1. 2.

3. 4.

 

5. 6.

 

7. 8.

 

 

9. 10.

 

11. 12.

13. 14.

 

15. 16.

 

17. 18.

 

19. 20.

Задание 3. Табулирование функции на интервале

Составить блок-схему алгоритма с известным числом повторений в цикле и написать программу, вычисляющую значения функции в заданном диапазоне значений х c шагом Значения параметров a, b, m, n, k, q задать произвольно.

 

1.      
2.    
  3.      
4.  
5.    
6.      
7.  
8.  
9.      
10.    
11.    
12.    
13.  
14.  
15.  
16.  
17.  
18.

Задание 4. Программирование алгоритмов циклической структуры

 

Составить блок-схему алгоритма и программу циклической структуры:

1. Вычислить факториал произвольного натурального числа N.

2. Найти числа Фибоначчи, не превышающие 50 (числа Фибоначчи - это члены последовательности, в которой каждый последующий элемент равен сумме двух предыдущих (например: 1,1,2,3,5,8,13,21...)).

3. Найти числа Фибоначчи, не превышающие 20.

4. Найти числа Фибоначчи, не превышающие 30.

5. Найти числа Фибоначчи, не превышающие 40.

6. Найти число размещений без повторений А и число повторе­ний С по формулам: А =n!/(n-r)! C =n!/r! × (n-r)!

7. Напечатать все Пифагоровы числа, не превышающие 20. Тройка на­туральных чисел, удовлетворяющих равенству a2+b2=c2, на­зываются Пифагоровыми числами. Например: 32 + 42 = 52.

8. Напечатать все Пифагоровы числа, не превышающие 30.

9. Напечатать все Пифагоровы числа, не превышающие 40.

10. Напечатать делители числа N принадлежащие интервалу (2,7).

11. Найти количество делителей числа М, кратных 3.

12. Найти сумму четных делителей числа В.

13. Найти произведение нечетных делителей числа К, принадлежащих интервалу (3,9).

14. Используя алгоритм Евклида, найти наибольший общий дели­тель (НОД) двух натуральных чисел М и N.

Алгоритм Евклида: пусть M и N - одновременно не равные нулю целые не­отрицательные числа, тогда: а) если M равно N, то наибольший общий делитель найден и он равен M; б) если M и N не равны (например, пусть M > N, найдите разницу между этими числами и ее значение присвойте большему; в данном слу­чае M=M-N); в) перейти на п. а) алгоритма Евклида.

15. Найти наименьшее общее кратное чисел N и M. (Используя алгоритм Евклида, см. задание 14).

16. Проверить, являются ли числа А и B взаимно простыми. (Числа, у ко­торых наибольший общий делитель равен единице, называ­ются взаимно про­стыми).

17. Напечатать все простые числа, не превышающие 29.

18. Проверить, является ли заданное число K совершенным. (Совершен­ным числом называется число, равное сумме всех своих дели­телей, меньших, чем оно само. Например: 28=1+2+4+7+14).

19. Найти сумму четных делителей числа К, превосходящих 5.

20. Найти произведение нечетных делителей числа К, превосходящих 5.

21. Найти значение выражения С= n!/r! – (n+r)2 при заданных целых n,r.

22. Найти значение выражения С= (n+1)!/r! – (n-r)2 при заданных целых n,r, n>r.

23. Найти значение выражения С= (n-2)!/r! + (n-r)! при заданных целых n,r, n>r.

24. Найти сумму нечетных делителей числа К, превосходящих 5.

25. Найти сумму четных делителей числа К из интервала (3,7).

26. Напечатать все простые числа, не превышающие 17.

27. Напечатать все простые числа, не превышающие 25.

Задание 5. Составление алгоритмов и программ обработки

Одномерных массивов



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 278; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 44.222.63.67 (0.034 с.)