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



ЗНАЕТЕ ЛИ ВЫ?

Ввод и вывод числовых значений массива

Поиск

Паскаль не имеет средств ввода-вывода элементов массива сразу, поэтому ввод и вывод значений производятся поэлементно. Инициализацию массива (присваивание начальных значений) можно организовать с помощью оператора присваивания. Однако чаще всего они вводятся с клавиатуры с помощью оператора Read с использованием счетного оператора цикла For.

Рассмотрим несколько фрагментов программ инициализации массива.

Второй вариант: For i:=1 to 10 do Begin Write(‘введи’, i:2, ‘-й элмент=’); ReadLn(A[i]); End;
Пример 7.1. Организовать ввод 10 элементов массива А с клавиатуры.

Первый вариант

For i:=1 to 10 do

ReadLn(A[i]);

Пример 7.2. Сформировать последовательность чисел 12, 22, 32,…… n 2 и оформить ее в виде одномерного массива.

For k:=1 to 10 do A[i]:=k*k;

 

Пример 7.3. Cформировать (сгенерировать) одномерный массив случайных чисел.

Используем стандартную функцию Random(x), котораявозвращает случайное число из диапазона от 0 до Х. Эта же функция без аргумента, Random, генерирует случайное число из диапазона от 0 до 1. Функция Randomize – обеспечивает несовпадение случайных чисел, генерируемых функцией Random.

Randomize;

For i:=1 to 10 do

Begin

A[i]:=Random(2)+5;

B[i]:= Random;

End;

В результате выполнения этого фрагмента программы будет создан массив А, который содержит десять случайных чисел из диапазона от 5 до 7, а массив В – десять случайных чисел из диапазона от 0 до 1. Функция Randomize позволяет получать различные значения элементов массивов при каждом обращении к этому фрагменту программы.

Вывод значений элементов массива выполняется аналогичным образом, но используются операторы Write или WriteLn.

Пример 7.4. Вывести значения элементов массива на экран.

For k:=1 to 10 do Writeln (С[k]);

Десять значений элементов массива С будут выведены на экран в столбец. Заменив оператор Writeln на Write, вывод элементов массива будет произведен в строку.

 

Действия над элементами массива

Рассмотрим несколько типичных примеров обработки элементов массива.

Пример 7.5. Вычислить сумму (Sum) четных элементов массива X[N], введенных с клавиатуры.

Введем обозначения:

N – количество элементов массива;

i – переменная, выполняющая функции параметра цикла и одновременно индекса элементов массива.

Для определения четности числа используем операцию целочисленного деления (остаток):

Приведем блок-схему и программу для этого примера.

Блок-схема

Program D-Array;

Const N=50;

Var X:Array[1..N] of real;

i: integer;

Sum: real;

Begin

Readln(N); {значение N не должно превосходить 50}

Sum:=0;

For i:=1 to N do

begin

readln(X[i]); {тело цикла}

If X[i] div 2=0 then sum:=sum+X[i];

end;

Writeln(sum);

End.

В разделе описания констант укажем значение константы N =50, количество элементов массива. Это очень удобно, т.к. в случае изменения размера массива не нужно будет вносить изменения в весь текст программы, а достаточно только изменить значение этой константы в разделе описания констант.

 

Пример 7.6. Вычислить максимальный элемент массива X [ n ], n =10.

Перед началом поиска максимального элемента допустим, что его первый элемент и является максимальным. Это запишется так Max:=X[1]. Далее циклически, начиная со второго элемента, сравниваем элементы массива с максимальным элементом. Если очередной элемент массива больше, чем максимальный, то следует считать его значение максимальным. Программа запишется следующим образом:

Program Demo-Array;

Var X:Array[1:10] of real;

i: integer;

Begin

For i:=1 to 10 do readln(X[i]); {ввод массива}

Max:=X[1] {считать 1-й элемент максимальным}

For i:=2 to 10 do

If X[i] > Max then Max:=X[i];

Writeln(Max);

End.

 

В следующих примерах будем записывать лишь фрагменты программ.

Пример 7.7. Выяснить, сколько элементов массива имеют нулевые значения.

Введем переменную k, назовем ее счетчиком и обнулим его. Далее циклически проверяем условие A[i]= 0 и если оно выполняется, добавляем единицу в счетчик.

k:=0; {счетчик}

For i:=1 to n do

If A[i]=0 then k:=k+1;

 

Пример 7.8. Обменять значения 1-го и 10-го элементов массива A[N].

Перестановка значений элементов массива осуществляется с помощью дополнительной переменной V.

V:=A[10];

A[10]:=A[1];

A[1]:=V;

 

Во всех этих примерах мы рассматривали явное описание массивов в разделе Var. В следующем примере рассмотрим неявное описание массива.

Пример 7.9. Используя процедуру, вычислить максимальный элемент массива из N элементов.

Назовем процедуру Max_Arr и оформим ее по аналогии c примером 7.6.

Инициализацию элементов массива произведем введением с пульта. Программа имеет вид

 

 

Program D_Array; {Поиск максимального элемента массива}

Type Masiv=Array[1..20] of integer;

Var MM,n,i:integer; A: Masiv;

Procedure Max_Arr(m: integer;X: Masiv; Var Max: integer);

Var k:integer;

Begin

Max:=X[1];

For k:=2 to m do If X[k]>=Max then Max:=X[k];

End;

{Основная программа}

Begin

Write(' Введите размер массива n=');Readln(n);

For i:=1 to n do Readln(A[i]); {ввод элементов массива}

Max_Arr(n, A, MM); {вызов процедуры}

Writeln('Максимальный элемент =',MM:3);

End.

Проследим соотношение формальных и фактических параметров процедуры Max_Arr.

процедура Max_Arr основная программа

Формальные параметры Фактические параметры

           
     
 
 
 

 

 

 

 


Двухмерный массив

Характерным примером двумерного массива является матрица, например,

Каждый элемент этого массива однозначно определяется двумя индексами, номером строки и номером столбца, на пересечении которых этот элемент стоит. Каждый элемент этого массива имеет имя A[i, j], где i=1, 2,..,5 - номер строки, а j=1, 2,..,7 – номер столбца, на пересечении которых этот элемент стоит.

Такой массив должен быть описан в разделе описаний. В случае явного описания массива это можно сделать одним из двух способов:

Var A: Array[1..5,1..7] of real;

или

Const m=5, n=7;

Var A: Array[1..m, 1..n] of real;



Поделиться:


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

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