русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Ввод массива


Дата добавления: 2015-06-12; просмотров: 895; Нарушение авторских прав


Если вы вводите значения элементов массива с клавиатуры, то получится следующая запись:

.

.

for i:=1 to 5 do

read(a[i]);

.

Можно заполнить массив с помощью генератора случайных чисел:

.

.

randomize;

for i:=1 to 5 do

a[i]:=random(50);

.

.

В этом случае массив заполнится случайными целыми числами от 0 до 49.

Если использовать запись a[i]:=random; массив заполнится случайными действительными числами от 0 до 1.

 

Вывод массива

Чтобы вывести массив, нужно также последовательно перебрать, вывести на печать все его элементы. Для этого используем оператор цикла со счетчиком.

вывод в одну строку –

.

.

for i:=1 to 5 do

write(a[i],’ ‘);

.

.

вывод в столбец –

.

.

for i:=1 to 5 do

writeln(a[i]);

.

.

 

Примеры:

1. Вычислить сумму пятнадцати целых чисел. Для обозначения чисел введем имя массива x, элементы которого имеют индекс i. Сумму обозначим именем sum. Тогда sum=x[1] +x[2] + ••• +x[15].

----------------------------------------------

Program P1;

Var

x : array [1..15] of integer;

sum, i: integer;

Begin

sum:=0;

for i:=1 to 15 do

Begin

read(x[i]);

sum:= sum + x[i];

end;

writeln(‘sum=’,sum);

End.

Внутри цикла вводится значение одного элемента массива x[i] и оно прибавляется к значению текущей суммы sum. Цикл повторяется 15 раз. Элементы массива имеют целый тип (integer), а индекс — ограниченный тип 1..15.

Переменная i, с одной стороны, используется как параметр цикла, а с другой — в качестве индекса. В этом случае описать переменную i можно двояко:

а) в разделе переменных var указать переменную i как ограниченного типа, например

Var

x : array [1..15] of integer;

i :1..15;

б) учитывая, что элементами ограниченного типа являются целые числа, можно ввести описание integer, например



Var

x : array [1..15] of integer;

i : integer;

Так как в языке ПАСКАЛЬ требуется описание всех переменных, то необходимо описать еще и переменную sum. Естественно, что она имеет тип integer, так как все суммарные числа x[i] имеют целый тип

---------------------------------------------------------------------------------------

 

2Рассчитать сумму элементов массива А из N элементов (7<N<10).

----------------------------------------------------------------------------------------

Program massiv;

var i,n:byte;

s:integer;

a:array [ 1..10] of integer;

begin

writeln(‘введите n от 7 до 10’);

read(n);

s:=0;

for i:=1 to n do

begin

read(a[i]);

s:=s+a[i];

end;

writeln(‘s=‘,s);

end.

-------------------------------------------------------------------

 

 

3Вычислите произведение 10 элементов массива А вещественного типа.

-----------------------------------------------------------------------------------------------

Program massiv1;

Var

p : real;

i : integer;

a:array [1..10] of real;

begin

p := 1;

writeln('Введите массив a');

for i: = 1 to 10 do

begin

read(a[i]);

p:=p*a[i];

end;

writeln('p=',p:10:4);

end.

-------------------------------------------------------------------------------

 

4Даны n натуральных чисел a1, a2, ... an. Определите среднее арифметическое членов последовательности, которые кратны 3 и не кратны 5.

--------------------------------------------------------------------------------

Program sr;

Var a : array [1..50] of integer;

i, n, k : integer;

s, sa : real;

begin

writeln('Bведите n');

readln(n);

writeln('Введите элементы массива a');

for i:=l to n do

read(a[i]);

writeln;

s:=0;

k:=0;

for i:=1 to n do

begin

if (a[i] mod 3=0) and (a[i] mod 5<>0) then

begin

s:=s+a[i];

k:=k+1;

end;

end;

if k=0 then

writeln('Нет решения')

else

begin

sa:=s/k;

writeln('sa=',sa:12:3);

end;

end.

---------------------------------------------------------------------------

Понятие многомерных массивов

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

Описание двумерного массива:

Type

<имя>=array[диапазон1,диапазон2] of <базовый тип>;

диапазон1, диапазон2 –диапазоны для двух индексов.

Например, изображение целых чисел последовательно в нескольких строках является матрицей:

5 4 3 6

2 8 1 7

4 3 9 5

Данная матрица имеет размер 3 на 4, т. е. она состоит из трех строк и четырех столбцов. Если всю матрицу обозначить одним именем, например А, то каждый элемент матрицы обозначается с двумя индексами, например A[I,J]. Здесь первый индекс I обозначает номер строки (I = 1, 2, 3), второй индекс J — номер столбца (J = 1, 2, 3, 4). Такую матрицу можно описать следующим образом (с использованием имени типа Т):

TYPE

Т=ARRAY [1..3, 1..4] OF INTEGER;

VAR А:Т;

ПРИМЕРЫ ПРОГРАММИРОВАНИЯ ЗАДАЧ С ИСПОЛЬЗОВАНИЕММАССИВОВ

Найти максимальный элемент массива В

а) массив – константа

Program m1;

const

B:array[1..2,1..5] of integer=((4,3,2,-1,0),(-7,0,13,2,8));

var

max,i,j:integer;

begin

max:=b[1,1];

for i:=1 to 2 do

for j:=1 to 5 do

if b[i,j]>max then max:=b[i,j];

writeln('max=',max);

end.

--------------

Ответ

max=13

-----------------------------------------------------------

б) Массив – переменная величина; элементы массива задаются с клавиатуры.

Program m4;

type

mass=array[1..2,1..5] of integer;

var

B:mass;

max,i,j:integer;

begin

writeln('введите массив В');

for i:=1 to 2 do

for j:=1 to 5 do

read(b[i,j]);

writeln;

max:=b[1,1];

for i:=1 to 2 do

for j:=1 to 5 do

if b[i,j]>max then max:=b[i,j];

writeln('max=',max);

end.

--------------------

Ответ

введите массив В

4 3 5 2 6

9 8 -4 67 2

 

max=67

--------------------------------------------------------------------------------

в) Массив – переменная величина; элементы массива задаются с помощью генератора случайных чисел RANDOMIZE.

Program m3;

var

B:array[1..2,1..5] of integer;

max,i,j:integer;

begin

randomize;

writeln('введите массив В');

for i:=1 to 2 do begin

for j:=1 to 5 do begin

b[i,j]:=random(30)-10;

write(b[i,j]:3,' ');

end;

writeln;

end;

writeln;

max:=b[1,1];

for i:=1 to 2 do

for j:=1 to 5 do

if b[i,j]>max then max:=b[i,j];

writeln('max=',max);

end.

-----------------------------

Ответ

введите массив В

18 10 17 10 10

12 10 7 8 19

 

max=19

--------------------------------------------------------------------------------------------------

г) Описание типа массива задаётся в разделе описаний типа TYPE; массив – переменная величина; элементы массива вводятся с клавиатуры.

Program m4;

type

mass=array[1..2,1..5] of integer;

var

B:mass;

max,i,j:integer;

begin

writeln('введите массив В');

for i:=1 to 2 do

for j:=1 to 5 do

read(b[i,j]);

writeln;

max:=b[1,1];

for i:=1 to 2 do

for j:=1 to 5 do

if b[i,j]>max then max:=b[i,j];

writeln('max=',max);

end.

------------------------------------

Ответ

введите массив В

5 6 7 8 4

9 8 7 6 -5

 

max=9

----------------------------------------------------------------------------------------------------

Пример (одномерные массивы)

Вычислить сумму действительных чисел.

Программу составим в трех вариантах: в варианте 1 массив не используется, в варианте 2 он описывается в разделе переменных, в варианте 3 массив определяется в разделе типов.

Для иллюстрации результата выполнения программы возьмем семь конкретных чисел 5.1, 6.4, 8,7, 1.9, 3.6, 2.0, 4,2

 

PROGRAM АЗО;

CONST N=7; (* КОЛИЧЕСТВО ЧИСЕЛ *)

VAR

A : REAL; (* ВВОДИМОЕ ЧИСЛО *)

SUM : REAL; (* СУММА *)

I: INTEGER; (* ПАРАМЕТР ЦИКЛА *)

BEGIN

SUM:=0;

WRITELN('ВВЕДИТЕ ЧИСЛА ЧЕРЕЗ ПРОБЕЛЫ:');

FOR 1:=1 TO N DO

BEGIN

READ(A);

SUM:=SUM +A

END;

WRITELN('----------------------------------');

WRITELN ('СУММА ЧИСЕЛ=', SUM:6:2 )

END.

Здесь каждое число вводится внутри цикла и прибавляется к накапливаемой сумме SUM. Значение переменной А изменяется внутри цикла. После выполнения всего цикла значение А равно последнему введенному числу. Для А отведена одна ячейка памяти ЭВМ, если условно считать, что действительное число занимает одну ячейку.

ВЫЧИСЛЕНИЕ СУММЫ, 2-й ВАРИАНТ

PROGRAM A31;

CONST N=7; (* КОЛИЧЕСТВО ЧИСЕЛ *)

VAR

A : ARRAY[1..N] OF REAL; (* МАССИВ ЧИСЕЛ *)

SUM : REAL; (* СУММА *)

I : INTEGER; (* ПАРАМЕТР ЦИКЛА *)

BEGIN

WRITELN('ВВЕДИТЕ МАССИВ ЧИСЕЛ ЧЕРЕЗ ПРОБЕЛЫ:');

FOR I:=1 ТО N DO

RЕAD(А[i] ) ;

SUM:=0;

FOR I:=1 ТО N DO

SUM:=SUM +A[I] ;

WRITELN('----------------------------------'):

WRITELN('СУММА ЧИСЕЛ =‘, SUM:6:2 )

END.

Здесь в разделе переменных VAR явно описан массив А. Для массива выделяется память в количестве семи ячеек, т. е. для каждого числа одна ячейка. В разделе операторов с помощью цикла сначала вводятся все значения элементов массива А. Затем организуется новый цикл для вычисления суммы. Применение массива приводит к увеличению используемой памяти ЭВМ - вместо одной ячейки (см. вариант 1) здесь выделено семь ячеек памяти. В то же время значения элементов массива сохраняются в памяти ЭВМ, и их можно использовать и после окончания выполнения циклической части.

Такой вариант программы целесообразно использовать в тех случаях, когда значения введенного массива многократно используются в программе.

ВЫЧИСЛЕНИЕ СУММЫ, 3-й ВАРИАНТ

 

PROGRAM А32А;

CONST N=7; (* КОЛИЧЕСТВО ЧИСЕЛ *)

TYPE Т=ARRAY[1..N] OF REAL; (* ТИП МАССИВА *)

VAR

А:Т; (* МАССИВ *)

SUM:REAL; (* СУММА *)

I:INTEGER; (* ПАРАМЕТР ЦИКЛА *)

BEGIN

WR1TELN('ВВЕДИТЕ МАССИВ ЧИСЕЛ ЧЕРЕЗ ПРОБЕЛЫ:');

FOR I:=1 ТО N DO

READ(А[I]);

SUM:=0;

FOR I:=1TO N DO

SUM:=SUM +A[I] ;

WRITELN('----------------------------------');

WRITELN('СУММА ЧИСЕЛ =', SUM:6:2 )

END.

Вариант З отличается от предыдущего только введением типа массива, что делает программу более эффективной

 



<== предыдущая лекция | следующая лекция ==>
Одномерные массивы | Каждая из этих структур имеет один вход и один выход.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.927 сек.