Лекция 20.Одномерные массивы. автор: Садовский Ефим Моисеевич1. Повторение. Строковые величины. Цикл For. 2. Одномерный массив. Назначение. До сих пор мы решали задачи с числами, в которых каждое следующее значение можно было по крайней мере вычислить из предыдущего (считали сумму чисел от 1 до N и т.д.) Представьте, что Вам надо сложить 5 чисел. Мы можем описать 5 переменных (например: х1, х2, х3, х4, х5), присвоить им нужные значения (или ввести с клавиатуры), а затем сложить (s:=x1+x2+x3+x4+x5). А если нам надо сложить 30 чисел? А если 300? Представьте себе строку вычисления суммы. Итак, для решения задач с набором данных одного типа (integer, real, string, char и др.), не зависящих друг от друга используются массивы. Например, у нас есть данные ежедневной средней температуры воздуха в январе: 3; 5; 2; 7; -9; -8; …; -17 Присвоим каждому значению (далее будем их называть элементами массива) порядковый номер (обратите внимание, что для каждого элемента массива определен его порядковый номер, то есть элементы массива расположены в строгом порядке). 1 2 3 4 5 6 … 31 3; 5; 2; 7; -9; -8; …; -17 Назовем получившуюся последовательность массивом и присвоим ему имя (аналогично имени переменной), например, А. Теперь к каждому элементу массива можно обратиться по его порядковому номеру (аналогично строковой переменной). Например, температура 5-го января: А[5]=-9, а 31-го: А[31]=-17. Тогда сумму всех элементов массива можно вычислить с помощью цикла For: s:=0; for i:=1 to 31 do s:=s+a[i]; Но для того, чтобы использовать массив в программе, необходимо его описать.
2. Одномерный массив. Описание. Массив описывается в разделе описания переменных (после слова Var). A:array[1..31] of integer; Мы описали массив (слово array) из 31 элемента (1, две точки, 31), состоящий из переменных целого типа (integer). Несколько одинаковых по величине и типу массивов можно описывать в одной строке: b,c:array[1..37] of char; А как быть, если мы заранее не знаем количество элементов массива (в задаче задано N чисел). К сожалению, в строке описания массива при указании размера нельзя использовать переменную, поэтому в качестве длины массива указывается заведомо большее значение. Для задач, решаемых на уроках программирования при отсутствии в условии задачи указания на конкретное количество элементов массива, указывайте 50. d:array[1..50] of real; В остальном решение задач с использованием массивов очень напоминает задачи с литерными величинами.
3. Одномерный массив. Ввод с клавиатуры и вывод на экран. Большинство задач, в которых требуется массив, включают в себя блоки ввода массива с клавиатуры и вывода его на экран. Ввод массива A с клавиатуры: write('Введите количество элементов массива: ')
readln(n);
for i:=1 to n do
begin write('A[',i,']=');
readln(a[i]);
end; Вывод массива A на экран: Одномерный массив на экран удобно выводить в строку, отделяя его элементы друг от друга пробелами: for i:=1 to n do write(A[i],' '); writeln; Пустой оператор writeln переводит курсор вывода данных на следующую строку.
4. Примеры решения задач. Пример 1. Вычислите среднее арифметическое одномерного массива, заполненного целыми числами. Так как количество элементов массива не указано, значит, оно вводится с клавиатуры. Для расчета среднего арифметического вычисляем сумму всех элементов массива и делим на их количество.program p1;
var a:array[1..50] of integer;
n,i:integer;
s:real;
begin
{Вводим массив}
write('Введите количество элементов массива: ')
readln(n);
for i:=1 to n do
begin
write('A[',i,']=');
readln(a[i]);
end;
{Вычисляем сумму элементов массива}
s:=0;
for i:=1 to n do
s:=s+i;
{Вычисляем и выводим на экран среднее арифметическое}
s:=s/n;
writeln('Среднее арифметическое =',s);
end. Пример 2. Замените в одномерного массиве, заполненном целыми числами, все элементы, кратные 3, нулями.program p2;
var a:array[1..50] of integer;
n,i:integer;
begin
{Вводим массив}
write('Введите количество элементов массива: ')
readln(n);
for i:=1 to n do
begin
write('A[',i,']=');
readln(a[i]);
end;
{Заменяем элементы кратные 3 нулями}
for i:=1 to n do
if a[i] mod 3=0 then
a[i]:=0;
{Выводим на экран получившийся массив}
for i:=1 to n do
write(A[i],' ');
writeln;
end. Решение задач. 1. Одномерный массив заполнен целыми числами. Вычислить сумму его элементов, кратных 5. 2. Одномерный массив заполнен любыми числами. Заменить отрицательные элементы их модулями. 3. Одномерный массив заполнен целыми числами. Возвести в квадрат элементы, стоящие на четных местах. 4. Заполнить одномерный массив из 100 элементов случайными числами от 1 до 10. Сколько получилось пятерок?
pascal, pascal, pascal, array pascal, array pascal
|