русс | укр

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

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

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

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


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

МАССИВЫ


Дата добавления: 2014-11-28; просмотров: 1514; Нарушение авторских прав


1. Массив (array)- это конечный набор элементов одного (базового) типа, которые сохраняются в последовательно размещённых ячейках оперативной памяти и имеют общее имя.

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

Общий вид конструкции описания типа массива такой:

 

array[<размер>] of <имя базового типа>;

 

Размер (количество элементов) массива чаще всего задают в виде диапазона или именем некоторого перечислимого типа данных.

Описать массив можно в разделе описания типов type,в разделе констант constили в разделе объявления переменных var.Имена типов массивов и переменных-массивов указывает пользователь.

Пример. Опишем тип массива mymasyv, объявим постоянный массив (массив-константу) zatraty типа mymasyv и переменные -массивы a, al типа mymasyv и массив Ь, состоящий из 7 элементов целого типа, массив с - из 100 элементов-символов.

type mymasyv = array [1..10] of real;

day = (mon, tue, wed, the, fri, sat, sun);

const zatraty: mymasyv = (1.2, 1, 1, 2, 8, 2.4, 8.7, 3, 7, 1.3);

var a, al : mymasyv;

b : array[day] of integer;

с : array [1..100] of char;

Над массивами определена единственная команда присваивания. Например, команда а := al все значения массива al присвоит соответствующим элементам массива а. Все остальные операции определены только над элементами массива. Доступ к элементам массива осуществляется так:

<имя массива>[<номер элемента>]

Номер (его часто называют индексом) записывают в квадратных скобках, например, а[1] - первый элемент массива a, b[tue] -второй элемент массива Ь.

Пример. Элементам описанных выше массивов можно присвоить значения так:

а[1] := 15.1; b[tue] := 3; с[1] := 'а'; с[2] := V.



Элементы массива zatraty имеют такие значения:

zatraty[l] = 1.2; zatraty[2] = 1; ...; zatraty[10] = 1.3.

Пример. Создать массив из первых ста положительных целых чисел и вычислить сумму всех его элементов можно так:

s := 0;

fori := 1to100 do

Begin

a[i] := i;

s := s + a[i]

end;

writeln(s);

Задачи поиска в массиве конкретных данных решают методом сканирования всех элементов массива при помощи команд цикла for, whileили repeatи команды ветвления, в которой указывают условие поиска.

Задача 1. Пусть уkэто число вызовов, которые поступают на АТС за k-тую секунду. Предположим, что уk - случайное число со значением от 0 до 6, которое генерируется формулой yk = trunc(abs(7sin(k))). Создать массив у с десятью элементами (k = 1, ..., 10). Вычислить количество вызовов за первые 10 секунд работы АТС и максимальное количество вызовов, которые поступили за одну секунду. Вывести результаты вычислений.

programATS;

usesCrt;

typevyzov = array[1..10] of integer;

var у : vyzov;

max, s, i : integer;

Begin

clrscr;

max := 0; {Предполагаем, что max = 0}

s:=0;

fori := 1to10do

begin {Вычисляем количество вызовов}

y[i] := trunc(abs(7 * sin(i))); {за i-тую секунду}

write('Количество вызовов за ', i, '—тую секунду: ');

writeln(y[i]:5); {Выводим это количество}

s := s + y[i]; {Вычисляем количество вызовов}

{Вычисляем max значение}

if y[i] > max then max := y[i];

end;

writeln('Количество вызовов за 10 секунд = ', s:3);

write('Максимальное количество вызовов за одну ');

writeln('секунду = ', mах:3);

readln

end.

Замечание. Случайное целое число со значением от 0 до 6 можно получить также с помощью функции random(7). В начале выполняемого блока следует записать вызов процедуры randomize (она обеспечивает разные последовательности случайных чисел во время повторного выполнения программы).

Задание 1. Модифицируйте программу ATS, используя функцию random, и определите, за какую секунду поступило максимальное количество вызовов.

Задание 2. Решите задачу № 9 своего варианта.

Задача 2. Создать массив у, элементы которого вычисляют по формуле уk=ln(k)-3, где k = 1, 2, ..., 10. Построить массив g, состоящий из отрицательных элементов массива у. Вывести результаты вычислений на экран. Если искомых величин нет, то вывести соответствующее сообщение.

В следующей программе переменная n определяет количество отрицательных элементов в новом массиве.

program DvaMassiva;

uses Crt;

varу, g :array[1..10] of real;

k, n : integer;

Begin

clrscr;

n := 0; {Сначала количество элементов в g = 0}

fork := 1 to10 do

Begin

y[k] := ln(k) - 3;

if y[k] <0 then{Проверяем условие }

Begin

{Увеличиваем количество элементов вектора g}

n := n + 1;

g[n] := y[k]; {Определяем п-ый элемент}

end;

writeln('y(', k, ')= ' , y[k]:7:2);

end;

ifn = 0then

writeln('B массиве у отрицательных элементов нет')

else for k := 1 to n do {Выводим массив g}

writelnCgf , k ,']=', g[k]:7:2);

readln

End.

Задание З. Решите задачу № 10 своего варианта.

2. Двумерные массивы.Двумерные массивы предназначены для работы с табличными данными. В двумерном массиве элементы определяются именем массива и двумя индексами: первый индекс указывает на номер строки, а второй - на номер столбца, на пересечении которых находится элемент. Например, р[1, 2] — второй элемент первой строки массива р.

Рассмотрим примеры объявления массива-константы bal, который состоит из 2 строк и 4 столбцов, массива sutki, содержащего 24´60 элементов целого типа, двухмерного массива р размера 9 на 9 (т.е. с 9´9=81 элементом).

constn = 9;

bal: array[1..2, 1..4]of integer=((4, 3, 5, 3), (4, 4, 5, 3));

varsutki: array[0..23] of array[0..59] of integer;

p : array[l..n, l..n] ofinteger;

 

Элементы массива bal принимают такие значения:

bal[l, 1] = 4, bal[l, 2] = 3, ..., bal[2, 3] = 5, bal[2, 4] = 3.

Значения элементам массива sutki можно задать командой присваивания двумя способами:

sutki[16][30] := 5 или sutki[16,30] := 5.

Задача 3. Составить программу для построения таблицы умножения двух чисел (таблицы Пифагора) и занесения её в двумерный массив р. Вывести массив на экран в виде таблицы.

programPifagor;

usesCrt;

constn = 9;

varp :array[l..n, l..n] ofinteger;

i, j : integer;

Begin

clrscr;

fori := 1tondo

Begin

forj := 1tondo

Begin

p[i, j] :=i* j;

write(p[i, j] : 6)

end;

writeln {Обратите внимание на команды вывода}

end;{массива в виде таблицы,}

readln

End.

Задача 4. Для изготовления пяти сортов конфет на кондитерской фабрике используют пять видов сырья. Пусть нормы затрат aij каждого вида сырья i на производство 1 кг конфет сорта j заданы формулой aij = 2|sin(i)| + j , i,j=1,…, 5. Вывести на экран таблицу затрат сырья (то есть массив а). Определить, для какого сорта конфет (imin) необходимо минимальное количество сырья (min) третьего вида.

programFabrika;

usesCrt;

typezatraty = array[1..5,1..5] ofreal;

var i, j, imin : integer;

min : real;

a : zatraty;

Begin

clrscr;

writeln(' Вид сырья');

writeln(' 1 2 3 4 5');

for i := 1 to 5 do {Создаём таблицу затрат}

Begin

write(i, ' сорт');

forj := 1to5do

Begin

a[i, j] := 2 * abs(sm(i)) + j;

{Выводим элементы i-ой строки}

write(a[i, j]:7:2);

end;

writeln {Переходим на новую строку}

end;

{Предполагаем, что минимальное количество}

imin := 1; {сырья третьего вида необходимо для}

min := а[1, 3]; {производства конфет первого сорта}

for i := 2 to 5 do

ifa[i, 3] < minthen

begin{Определяем искомый сорт конфет}

min := a[i, 3];

imin := i

end;

writeln('Меньше всего сырья третьего вида ');

write('Heo6xonHMO для производства конфет ');

writeln( imin, ' сорта');

readln

End.

Замечание. Пусть задана матрица aij, i, j = 1, 2, ..., n. Тогда выражения i = j, i < j и i > j определяют соответственно элементы главной диагонали, элементы над главной диагональю и элементы под главной диагональю этой матрицы.

Задание 4. Решить задачу № 11 своего варианта.

Задача 5. Задан массив Ь, элементы которого вычисляются по формуле bij= i + j2, где i, j = 1, 2, ..., 5. Создать и вывести массив у, состоящий из элементов массива Ь, значение которых больше 20. Определить количество элементов массива у. Массив Ь вывести в виде матрицы 5x5. Если искомых данных нет, вывести соответствующее сообщение.

programMassiv5x5;

usesCrt;

typemassiv= array[1..5, 1..5] ofreal;

newmas= array[1..25] of real;

var b : massiv;

у : newmas;

i, j, k : integer;

Begin

clrscr;

k := 0; {Сначала k (количество bij >20) =0}

writeln('Выведем матрицу b');

fori := 1to5do

Begin

forj := 1to5do

Begin

b[i, j] :=i +j * j; {Выводим элементы, i-ой строки}

write(b[i, j]:7:2);

ifb[i, j] > 20 then

Begin

k := k + 1; {Определяем k-ый}

y[k] := b[i, j]; {элемент массива у}

end;

end;

writeln;

end;

ifk = 0thenwrite('B массиве нет элементов >20')

Else

Begin

writeln('Выведем созданный массив');

for i := 1 to k do

writeln(y[i]:7:2);

writeln('Количество элементов массива у =', k:2);

end;

readln

End.

Задание 5. Решите задачу № 12 своего варианта.



<== предыдущая лекция | следующая лекция ==>
ВЕТВЛЕНИЯ | СТРОКИ (STRING)


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


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

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

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


 


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

 
 

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

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