Контрольные вопросы:
1. Какие служебные слова используется для обозначения цикла со счетчиком (с параметрами)?
2. Как изменяется переменная цикла в цикле со счетчиком?
3. Что называется массивом? Какие массивы вы знаете?
4. Назовите особенности массива. Можно ли для обозначения имени массива использовать цифры?
5. Какие характеристики имеет массив? Для чего нужен индекс?
6. В каких случаях для решения задач нужен массив?
7. Какова структура решения задач с массивами?
8. Какой массив называется одномерным?
9. Как описать одномерный массив?
10. Как переменной присвоить случайное число?
11. Составить программу для решения следующей задачи: Массив, состоящий из 12 элементов, заполните случайными целыми числами из промежутка от -5 до 5. Выведите его на экран монитора. Найдите сумму элементов массива и распечатайте на новой строке.
Подсказка. Отмечу, что случайное число из промежутка [-5;5] будет задано формулой: Random(10)-5.
Сумму следует искать в цикле по формуле: S:=S+X(I)
Обязательно надо учесть, что начальное значение величины S должно быть равно 0.
Решение:
Uses crt; Var S,t: integer; x: array [1..12] of integer; Begin Clrscr; Randomize; For i:=1 to 12 do x[i]:=Random(10)-5; Writeln(‘Массив случайных чисел’); For i:=1 to 12 do Write(x[i]:5]; Writeln; S:=0; For i:=1 to 12 do S:=S+x[i]; Write(‘S=’, S:5); End. | Присоединение модуля Crt Раздел описания переменных Целочисленная переменная Массив Начало алгоритма Очистить экран Заполнение массива Вывод заголовка Вывод массива Перевод курсора на новую строку Обнуление S Вычисление суммы элементов массива Вывод суммы Конец алгоритма |
Сумма | Произведение | Количество |
S:=0; for I:=1 to n do S:=S+a(i); | P:=1; for I:=1 to n do P:=P*a(i); | K=0; for I=1 to n do K=K+1; |
Сумма | Произведение | Количество |
S:=0; for I:=1 to n do if <условие> then S:=S+a(i); | P:=1; for I:=1 to n do if <условие> then P:=P*a(i); | K=0; for I=1 to n do if <условие> then K=K+1; |
Здесь S - сумма, P – произведение, K – количество элементов массива A(n).
|
Простые операции над массивами.
· Поиск заданного элемента в массиве.
· Подсчет элементов в массивах.
· Математические операции над массивами.
· Статистические операции над массивами.
Задача 1. Массив, состоящий из 15 элементов, заполнен целыми случайными числами из промежутка [0; 100]. Найдите элемент массива, в котором хранится наибольшее число.
Uses crt; Var Max, Nmax, i: integer; x: array [1..15] of integer; Begin Clrscr; Randomize; For i:=1 to 15 do x[i]:=Random(100); Writeln(‘Массив случайных чисел’); For i:=1 to 15 do Write(x[i]:5]; Writeln; Max:=x[1]; Nmax:=1; For i:=2 to 15 do If x[i]>max then Begin Max:=x[i]; Nmax:=I; End; Write(‘Max=’, Max:5, ‘Nmax=”, Nmax:5); End. | Присоединение модуля Crt Раздел описания переменных Целочисленная переменная Массив Начало алгоритма Очистить экран Заполнение массива Вывод заголовка Вывод элементов массива Перевод курсора на новую строку Поиск максимума Начало цикла Начало ветвления Конец ветвления и цикла Вывод максимального значения и номера максимального элемента Конец алгоритма |
№1. В линейном целочисленном массиве из N элементов найти количество положительных Kp, количество отрицательных Ko, сумму S и среднее арифметическое SA
program arr_1;
uses crt;
var t:array[1..100] of integer;
sa:real; ko,kp,s,i,N:integer;
begin
writeln('vvedite N');
read(N);
writeln('vvedite massiv');
for i:=1 to N do read(t[i]);
s:=0; ko:=0;kp:=0;
for i:=1 to N do
begin
if t[i]<0 then ko:=ko+1;
if t[i]>0 then kp:=kp+1;
|
s:=s+t[i];
end;
sa:=s/N;
writeln('summa s=',s);
writeln(' sa=',sa:5:2);
writeln('ko=',ko);
writeln('kp=',kp);
end.
№ 2. В линейном целочисленном массиве t из n элементов
найти min – значение минимального элемента и его индекс nmin.
program arr_2;
uses crt;
var t:array[1..100] of integer;
min,nmin,i,n: integer;
begin
writeln('vvedite n='); readln(n);
writeln('vvedite massiv');
for i:=1 to n do read(t[i]);
min:=t[1];
nmin:=1;
for i:=2 to n do
if t[i]<min then
begin
min:=t[i];
nmin:=i;
end;
writeln('min=',min);
writeln('nomer min=',nmin);
end.
№ 3. Выполнить сортировку элементов массива А по возрастанию значений элементов.
Алгоритм:
Сравнивая последовательно соседние элементы массива по значению, менять их местами, если они – по убыванию. Используем переменную stek для обмена значениями элементов массива.
program sortirovka;
uses crt;
var a:array[1..100] of integer;
n,i,stek:integer;
Begin
writeln('введите n=');
readln(n);
writeln('введите массив');
for i:=1 to n do read(a[i]);
For i:=1 To n-1 Do
If a[i+1]<a[i] Then
Begin
stek:=a[i];
a[i]:=a[i+1];
a[i+1]:=stek;
i:=1;
End;
writeln('новый массив');
for i:=1 to n do write(a[i],' ');
End.
Пошаговое выполнение алгоритма для массива из 5 элементов
№i | 1 | 2 | 3 | 4 | 5 |
A[i] | -5 | ||||
1-й цикл | -5 | ||||
2-й цикл | -5 | ||||
3-й цикл | -5 |