М А С С И В Ы. © МОУ СОШ 13
22 Массив это множество однотипных элементов, объединённых общим именем и занимающих в компьютере определённую область памяти. Одномерные массивы Если за каждым элементом массива закреплен только один его порядковый номер, то такой массив называется линейным, или одномерным.
33 Массив в Паскале := array [ ] of ; Каждый элемент массива в общем виде описывается как А[I], где А - имя массива, I - номер или индекс массива (0<=I<=N), A[I] - значение элемента массива. Пример объявления массива: program mas1; var a: array [1..10] of integer; i: integer; Begin..
44 Способы заполнения массива. 1) по формуле; 1) по формуле;по формуле;по формуле; 2) ввод с клавиатуры. 2) ввод с клавиатуры.ввод с клавиатуры.ввод с клавиатуры. 3) заполнение константами: Const F = 5; //в разделе 3) заполнение константами: Const F = 5; //в разделе B : array [1..F] of integer = (5,4,-2, 8, 13); //описания Сonst B : array [1..F] of integer = (5,4,-2, 8, 13); //описания Сonst Заполнить массив К(13) константами. Найти количество эл-тов, кратных 7 и сумму эл-тов < 7. Распечатать массив. mas_s14.pas
55 Пример 6. Набрать программу нахождения суммы всех элементов массива. Program massiv; Const n=10; Var a:array[1..n] of integer; s, i: integer; Begin s:=0; WriteLn('Исходный массив:'); For i:=1 to n do begin a[ I ]:=random(10); s:=s + a[ I ]; Write('a[, i, ']=, a[ I ],' '); end; WriteLn('Сумма эл-тов S = ', s); end. Изменить программу так, чтобы: 1) массив состоял из 15 элементов вещественного типа; 2) сумма элементов выводилась на отдельной строке. 3) значения элементов массива должны меняться в интервале от 0 до 5; 4) при запуске программы формировалась новая последовательность случайных чисел; 5) в результате выполнения программы должно быть найдено произведение всех элементов массива, а не их сумма. 6) распечатать массив в столбец. Massiv.pas
66 Задача 7: Сформировать массив М из 15 целых чисел вводом с клавиатуры. Заменить элементы < 5 пятёрками. Вычислить сумму элементов и среднее арифметическое. Распечатать массив. алг 7 (цел таб M[1:15], цел S,N; вещ SR) арг M[i] рез S,SR нач S:=0, SR:=0, N=15 для I от 1 до N ввод M(i) если M(i) < 5 то M(i) = 5 всё S:=S+M(i) кц для I от 1 до N вывод M(i) кц SR:=S/N (вычисление среднего арифметического) вывод S, SR кон !!! Составить программу самостоятельно. Mas7.pas
77 Задача 8: Заполнить одномерный массив случайными числами. Найти МАХ элемент и его номер. Распечатать массив в строку. алг 8 (вещ таб V[1:N], вещ МАХ, цел I, Imax;) арг V[i]; N=20 рез MAX, Imax нач Заполнить и распечатать исходный массив. МАХ = V(1); Imax = 1 для I от 1 до N если MAX < V(i) то MAX = V(i); Imax = i всё кц вывод MAX, Imax кон Max_1. pas !!! Составить программу самостоятельно.
8 ПОДГОТОВКА К САМОСТОЯТЕЛЬНОЙ РАБОТЕ ( ОДНОМЕРНЫЙ МАССИВ ). ПОДГОТОВКА К САМОСТОЯТЕЛЬНОЙ РАБОТЕ ( ОДНОМЕРНЫЙ МАССИВ ). 1. Заполнить массив F(55) по формуле 2*I + i/3. Найти : произведение элементов 100. Распечатать массив в строку. 2. Заполнить целочисленный массив В(7) вводом с клавиатуры. Найти сумму отрицательных элементов. Найти сумму отрицательных элементов. Распечатать массив. Распечатать массив. 3. Заполнить массив С (10) константами: 14, 33, -8, 77, 55, 62, 38, -13, 99, -21. Найти количество отрицательных чисел и вывести на печать числа, кратные 11. Найти количество отрицательных чисел и вывести на печать числа, кратные MAS_S11 MAS_S12 MAS_S13
9 ДОПОЛНИТЕЛЬНЫЕ ЗАДАЧИ: 9 1. Сумму элементов массива с i1-го по i2-й (i1 и i2 вводить с клавиатуры). 2. Произведение всех четных элементов массива, имеющих четны номера. 3. Произведение элементов, имеющих нечетное значение. И сумму элементов, имеющих нечетные индексы. 4. Индексы тех элементов, значения которых больше значения предыдущего элемента (начиная со второго). 5. Найти пару соседних элементов с суммой, равной заданному числу. 6. Есть ли в данном массиве два соседних положительных элемента? Найти номера первой (последней) пары. sosedn.pas
10 ДОПОЛНИТЕЛЬНО: 1-й МАССИВ. 1. Для одномерного массива определить и вывести на экран номер первого элемента с наибольшим значением и номер последнего элемента с наименьшим значением. 2. Найти одинаковые элементы массива и их индексы. 3. Найти максимальное количество подряд идущих совпадающих элементов. (С2_08) Дополнит_задачи + С2_тренер_задания_2010 Дополнит_задачи + С2_тренер_задания_2010
1111 Двумерные массивы Двумерный массив – таблица, состоящая из нескольких строк. Элемент матрицы обозначается как A(I,J), где А имя массива, I индекс (номер) строки, J индекс (номер) столбца.. В Паскале двумерный массив кодируется : : array [, ] of ]. var a : array[1..3, 1..5] of real;;
1212 Соотношение индексов в квадратной матрице I=J элементы матрицы расположены на главной диагонали I< J элементы матрицы расположены над главной диагональю I>J элементы матрицы расположены под главной диагональю I+J = N+1 элементы матрицы расположены на побочной диагонали (N количество строк или столбцов в квадратной матрице) I+J < N+1 элементы матрицы расположены над побочной диагональю I+J > N+1 элементы матрицы расположены под побочной диагональю.
1313 З АДАЧА 9: Заполнить и распечатать в виде таблицы двумерный массив А(4,4). Вычислить: 1) сумму элементов главной диагонали S; 2) произведение элементов 4-го столбца P4; 3) сумму элементов 2-й строки S1. алг вычисление суммы и произведения (цел таб А[1:4,1:4], цел S,S2,P4) рез S,S2,P4 арг А [i,j] нач S:=0, S2:=0, P4:=1 1) сформировать массив А [1:4,1:4] случайными числами 2) распечатать исходный массив (от 0 до 7) для I от 1 до 4 S:= S + A [i, i] P4:=P4 * A[i,4] S2:=S2+A[2,i] кц вывод S, P4, S2 кон MAS_9.pas
1414 Program MAS_9; Uses CRT; Const N=4; var a: array [1..4, 1..4] of integer ;{ = (1,2,3,4,5,6,7,8,9,10, 11,12,13,14,15,16); } var S,S2,P4,i,j: integer; BEGIN ClrScr; RANDOMIZE; S:=0; S2:=0; P4:=1; for i:=1 to N do begin for j:=1 to N do begin a[i,j]:=random(7); write(a[i,j],' '); end; writeln; end; for i:=1 to N do begin S:=S+a[i,i]; P4:=P4*a[i,4]; S2:=S2+a[2,i]; end; writeln; writeln('S= ',S, ' P4=',P4, ' S2=',S2); readln; END.
1515 ЗАДАЧА 10: Создать массивL (4,4) по формуле: L(i, j) = I 2 - 2*j. Найти количество положительных элементов главной диагонали. Найти сумму элементов, кратных 7. Распечатать массив в виде таблицы. MAS_10. pas !!! Составить алгоритм и программу самостоятельно.
1616 З АДАЧА 11: Найти максимальные элементы двумерного массива и их количество. Распечатать массив в виде таблицы. алг кол-во МАХ (ваш таб А[1:3,1:3], вещ МАХ, цел К) арг А [i,j] рез MAX, K нач MAX:=0, K:=0 сформировать массив А[1:3,1:3] вводом с клавиатуры MAX:=A[1,1], K=1 для I от 1 до 3 для J от 1 до 3 если А[i,j] = MAX то К:=K+1 все если A[i,j] > MAX то MAX:=A[i,j], K:=1 все вывод А[i,j] кц перевод строки кц вывод MAX, K кон KOL_MAX.pas
1717 Program KOL_MAX; Uses Crt; const n=3; var A:array[1..N,1..N] of real; i,j,k:integer; MAX: real; BEGIN ClrScr; MAX:=0; K:=0; writeln(' ввести значения таблицы'); for i:=1 to N do for j:=1 to N do read (a[i,j]); (*подсчёт МАХ и печать таблицы *) max:=a[1,1]; for i:=1 to n do for j:=1 to n do begin if a[i,j] = max then k:=k+1; if a[i,j] > max then begin max:=a[i,j]; k:=1 end; writeln; writeln ('печать исходной таблицы'); for i:=1 to n do begin for j:=1 to n do write (a[i,j]:5:2,' '); writeln; end; writeln; writeln('MAX= ',MAX:5:2); write('K= ',k) END.
18 ДОПОЛНИТЕЛЬНО: 2 –й МАССИВ. (к части С2) 1. (4.7) В произвольном двухмерном числовом массиве определить и вывести на экран номер строки, содержащей наибольшее количество элементов с положительными значениями.4.7) 2. (4.8) – В произвольном двухмерном числовом массиве определить и вывести на экран количество элементов с максимальным значением для того столбца, который содержит наименьшее максимальное значение.(4.8) – Часть C2_2010 Часть C2_2010 Часть C2_ Сам_нов_ Часть C2_ Сам_нов_ 200 9
19 Логические переменные Program Log; Uses Crt; Var a,b: Boolean; Begin ClrScr; A:=True; b:=True; Writeln(a:8,b:8, a and b:8); a:=True; b:=False; Writeln(a:8,b:8, a and b:8); a:=False; b:=True; Writeln (a:8,b:8, a and b:8); a:=False; b:=False; Writeln(a:8,b:8, a and b:8); Readln; End.
20 Program Log_2; Uses Crt; Var a: array [1..3] of Boolean; b,c: array [1..3] of integer; i:integer; Begin ClrScr; for i:=1 to 3 do begin write('b[',i,'] = '); read(b[i]); write('c[',i,'] = '); read(c[i]); end; writeln('mass B'); for i:=1 to 3 do write(b[i],' '); writeln; writeln('mass C'); for i:=1 to 3 do write(c[i],' '); writeln; for i:=1 to 3 do if b[i]-c[i]>0 then a[i]:=True else a[i]:=False; for i:=1 to 3 do write(a[i],' '); Readkey; End.
21 ЗАПИСИ (тип данных). ЗАПИСЬ - представляет собой совокупность ограниченного числа данных различного типа. В записи под одним именем объединяются данные разных типов. Запись удобно использовать для объявления табличных данных. В отличие от массива, компоненты записи могут иметь разные типы, и доступ к ним осуществляется не по индексу, а по составному имени. Например, оформление ведомости (список фамилий, имён, оценок … var a:array[1..3] of record name : string; c : integer; end;
22 Program ZAP_; Uses Crt; var a:array[1..3] of record name:string; oc:integer; end; i:integer; c:char; begin ClrScr; for i:=1 to 3 do begin a[i].name:=''; {очистка ячейки для каждой фамилии} writeln('ввод фамилии (пробел в конце)'); repeat read(c); a[i].name:=a[i].name+c until c=' '; {считана фамилия} writeln('ввести имя (пробел в конце)'); repeat read(c); a[i].name:=a[i].name+c until c=' '; {считано имя} write('оценка '); readln(a[i].oc); end; writeln; writeln('печать списка'); for i:=1 to 3 do writeln(a[i].name,' ',a[i].oc); readkey; end.