Автор: Пользователь скрыл имя, 06 Марта 2013 в 01:19, реферат
Предположим, что программа работает с большим количеством однотипных данных. Скажем около ста разных целых чисел нужно обработать, выполнив над ними те или иные вычисления. Как вы себе представляете 100 переменных в программе? И для каждой переменной нужно написать одно и тоже выражение вычисления значения? Это очень неэффективно.
Предположим, что программа работает с большим количеством однотипных данных. Скажем около ста разных целых чисел нужно обработать, выполнив над ними те или иные вычисления. Как вы себе представляете 100 переменных в программе? И для каждой переменной нужно написать одно и тоже выражение вычисления значения? Это очень неэффективно.
Есть более простое решение.
Это использование такой
Нужно четко понимать, что индекс ячейки массива не является ее содержимым. Содержимым являются хранимые в ячейках данные, а индексы только указывают на них.
Массив – однородная совокупность элементов
Номер элемента массива называется индексом. Индекс – это значение порядкового типа, определенного, как тип индекса данного массива. Очень часто это целочисленный тип ( integer , word или byte ), но может быть и логический и символьный.
В языке Паскаль тип массива задается с использованием специального слова array (англ. – массив), и его объявление в программе выглядит следующим образом:
Type < имя _ типа >= array [ I ] of T;
где I – тип индекса массива, T – тип его элементов.
Можно описывать сразу переменные типа массив, т.е. в разделе описания переменных:
Var a,b: array [ I ] of T;
Результате вычисления может оказаться за пределами интервала допустимых значений индекса, то есть будет произведена попытка обратиться к элементу, которого не существует. Эта типичная ошибка называется «выход за пределы массива».
Пример программы с ошибкой массива Паскаля
Program primer _ error ;
Type
vector=array [1..80] of word;
var
n: integer;
a: vector;
begin
n:=45;
a[n*2]:=25;
end .
Хотя данная
программа полностью
Пример
фрагмента программы ввода
Var
A : array [1..10] of integer ;
I : byte ; {переменная I вводится
как индекс массива}
Begin
For i:=1 to 10 do
Readln (a[i]); { ввод i- го элемента производится
с клавиатуры }
Рассмотрим
теперь случай, когда массив Паскаля
заполняется автоматически
Пример фрагмента программы заполнения массива Паскаля случайными числами
Var
A: array [1..10] of integer;
I : byte ; {переменная I вводится как индекс
массива}
Begin
For i :=1 to 10 do
A [ i ]:= random (10); { i -му элементу
массива присваивается «случайное» целое
число в диапазоне от 0 до 10}
Вывод массива в Паскале осуществляется также поэлементно, в цикле, где параметром выступает индекс массива, принимая последовательно все значения от первого до последнего.
Пример фрагмента программы вывода массива Паскаля
Var
A: array [1..10] of integer;
I : byte ; {переменная I вводится как индекс
массива}
Begin
For i :=1 to 10 do
Write ( a [ i ],’ ‘); {вывод массива осуществляется в строку, после каждого
элемента печатается пробел}
Пример программы вывода массива Паскаля в столбик
Var
A: array [1..10] of integer;
I : byte ; {переменная I вводится как индекс
массива}
Begin
For i:=1 to 10 do
Writeln (‘a[‘, i,’]=’, a[i]); { вывод элементов массива
в столбик }
На экране мы увидим, к примеру, следующие значения:
a [1]=2
a [2]=4
a [3]=1 и т.д.
Найти произведение элементов одномерного массива, состоящего из n элементов. Элементы вводятся с клавиатуры.
Program proisveden;
Var a: array[1..100] of integer;
i, n, p: integer;
Begin
Write (‘Сколько элементов? ’); Readln (n);
p:=1;
For i:=1 to n do
begin
write (‘введите число’); readln (a[i]);
p:=p*a[i];
end;
writeln(‘произведение элементов равно: ‘,p);
End.
Задача
Пусть известно, что в автопарке, имеющем 18 машин марки КАМАЗ, каждый из КАМАЗов перевез за день определенный объем груза. Определить суммарный объем перевозок грузов за день.
При решении задачи будем использовать тип массива KAMAZ для описания всех КАМАЗов автопарка; переменную Р[i] для описания объема груза, перевезенной i-ой машиной за день (i меняется от 1 до 18).
Program pr1;
Type KAMAZ =array[1..18] of real;
Var i:integer;
P:KAMAZ;
S:real;
Begin
S:=0;
For i:=1 to 18 do
Begin
Writeln (‘Введите объем перевозок ', i, ‘-й машины, т');
Readln (p[i]);
S:=S+p[i];
End;
Writeln (‘Суммарный объем перевозок S=',S:8:2,' т');
End.
Накопление суммы в данном примере будет проводиться по шагам, при вводе для очередной машины значения объема перевозок сумма будет увеличиваться на данную величину.
Аналогично реализуется и алгоритм нахождения произведения элементов массива (с заменой начального значения суммы S:=0 на начальное значение произведения S:=1, и с заменой операции сложения элементов массива «+» на операцию умножения «*»).
Задача2
Известна среднемесячная зарплата всех 16 сотрудников одного отдела. Найти величину наибольшей среднемесячной зарплаты в отделе.
Для описания списка зарплат сотрудников воспользуемся типом массива ZARPL, для задания зарплаты каждого из сотрудников - переменной SOTR.
Program pr2;
Type ZARPL=array[1..16] of real;
Var i:integer;
sotr:ZARPL;
Max: real;
Begin
For i:=1 to 16 do
Begin
Writeln (‘Введите зарплату ', i,' -го сотрудника, руб.');
Readln(sotr[i]);
End;
Max:=sotr[1];
For i:=2 to 16 do if max<sotr[i] then max:=sotr[i];
Writeln(‘Наибольшая зарплата =',max:10:2,' руб.'); End.
В данной
программе реализован
Аналогично может быть найден и наименьший элемент в массиве. Для этого достаточно заменить в изложенной программе условие max<sotr[i] на условие min>sotr[i], где i меняется от 1 до 1 до 16, min - переменная типа REAL.
Вычисление суммы положительных элементов массива.
Program summa;
Var a:array[1..10] of integer;
S,i:integer;
Begin
For i=1 to 10 do
Begin
Write (‘введите’, i, ‘ ый элемент’);
Read (a[i]);
End;
S:=0
For i=1 to 10 do
If a[i]>0 then
S:=s+a[i];
Writeln(S);
End.
4. Задан массив А, состоящий из n чисел. Найти среднее арифметическое его элементов. Элементы вводятся с клавиатуры.
Program srednee;
Var a: array[1..10] of real;
i, n: integer;
s,sred: real;
Begin
s:=0;
For i:=1 to n do
begin
write (‘введите число’); readln (a[i]);
s:=s+a[i];
end;
sred:=s/n;
writeln(‘среднее арифметическое элементов: ‘,s);
End.
10. В заданном одномерном массиве, состоящем из n целых чисел, подсчитать количество нулей.
Program kolv0;
Var a: array[1..100] of integer;
i, n, k: integer;
Begin
Write (‘n=’); Readln (n);
For i:=1 to n do
begin
Write(‘a[‘,i,’]=’); readln (a[i]);
if a[i]=0 then k:=k+1;
end;
Writeln(‘количество 0 равно ’, k);
end.
Задача 1.
Сформировать одномерный массив из 10 элементов. Напечатать элементы массива в прямом и обратном порядке.
{Для получения
случайных чисел воспользуемся следующей
функцией:
Формирует случайное число
от 0 до X целого или вещественного типа
X - параметр, указывающий диапазон
значений случайного числа.
uses crt;
var i, n:integer;
a:array[1..10] of integer;
begin
clrscr;
write(' размер =' );readln(n);
for i:=1 to n do
begin
{Получаем
случайные числа в пределах от 1 до 45.}
a[i]:=random(46))+1;
{Выводим
элементы массива на экран.}
write(a[i], ' ' );
end;
{Полученный
массив печатаем в обратном порядке.}
for i:=n downto 1 do
write(a[i],' ');
readkey;
end.