русс | укр

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

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

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

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


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

Примеры


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


Общая информация

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

Вывод элементов двумерного массива осуществляется поэлементно, как и в случае ввода. Для решения задачи вывода снова изобразим массив:

 

перемещение по строкам (цикл по переменной I) перемещение вдоль строки (цикл по переменной J)
А(1,1) А(1,2) А(1,3) А(1,4) ... А(1,М)
А(2,1) А(2,2) А(2,3) А(2,4) ... А(2,М)
... ... ... ... ... ...
А(N,1) А(N,2) А(N,3) А(N,4) ... А(N,М)

Зададим с помощью двух циклов перебор всех элементов массива. Один цикл (по переменной I) будет осуществлять перебор строк, другой (по переменной J) перебор элементов в строке:

const
m = 10; {число строк}

n = 15; {число столбцов}

var

A : array[1..m,1..n] of Integer; {Объявление двумерного массива}

Begin

 

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

for I:=1 to N do {Цикл по строкам. От 1 до максимального номера строки}

for J:=1 to M do {Цикл по столбцам. От 1 до максимального номера столбца}

A(I,J):= i+j; {Запись в элемент значения}

 

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

for I:=1 to N do{Цикл по строкам. От 1 до максимального номера строки}

begin

for J:=1 to M do {Цикл по столбцам. От 1 до максимального номера столбца}

Write( A(I,J):4,’ ‘); // вывод элемента массива на экран

writeln;

end;

 

End.

Как видно цикл по J находится внутри цикла по I (они так и называются внутренний и внешний), поэтому на один шаг "сработает" цикл по I, затем полностью цикл по J, снова на один шаг цикл I и опять полностью цикл по J и т.д. Таким образом, выбирается строка 1 и начинается перемещение вдоль этой строки (по столбцам). Далее выбирается строка 2 и начинается вывод всех ее элементов и т.д., т.е. обработка элементов массива осуществляется по строкам. Если же циклы поменять местами, т.е. цикл по J сделать внешним, а цикл по I - внутренним обработка массива будет происходить по столбцам.



4.3 Многомерные массивы в Pascal

Кроме одномерных массивов могут быть и двумерные, и трехмерные, и прочие n-мерные массивы. "Мерность" массивов определяется количеством индексов, указываемых в квадратных скобках, для того чтобы определить элемент массива.

Пример:

A[7] - A - одномерный массив
S[2,-3] - S - двумерный массив
W[1,0,0] - W - трехмерный массив
Z[-1,3,4,3,0] - Z - пятимерный массив

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

Пример 1: Заполнить массив 1 случайными числами от -10 до 10. Заполнить массив 2 отрицательными числами из первого массива.

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

Const

N = 15

Var

M1 : array [1..N] of Integer; // исходный массив

M2 : array [1..N] of Integer; // массив для «-» чисел.

I: integer; // Счетчик для перебора элементов массива в цикле

J: integer; // Счетчик для подсчета отрицательных значений

Begin

I:=1;

J:=1;

Randomize; // инициализация генератора случайных чисел

// заполнение массива 1 числами

For I:=1 to N do

M1[I]:= random(21) – 10; { в i-й элемент записывается число (от 1 до 20) - 10 }

 

For I := 1 to N do // цикл перебирает все элементы массива 1

If (M1[I] < 0) Then //Если элемент массива меньше 0, то

Begin //Будет несколько действий, открываем операторные скобки

M2[J] := M1[I]; {Записываем элемент массива 1 в текущий элемент массива 2}

J:= J+1; //Вручную увеличиваем счетчик элементов массива 2

End; //Закрываем операторные скобки

End.

Пример 2. Ввести с клавиатуры массив и распечатать его в обратном порядке

Program M2;

Var

A : Array [1..20] Of Integer;

I : Integer;

Begin

For I:=1 To 20 Do {Организуем цикл с параметром I по всем возможным элементам массива}

Readln(A[I]); {значениям индексов и вводим A[I] с клавиатуры}

For I:=20 Downto 1 Do {Распечатываем массив в обратном порядке}

Write(A[I]:4,' ')

End.

 

Пример 3. Задать и распечатать массив 10X10, состоящий из целых случайных чисел в интервале [1,100]. Найти сумму элементов, лежащих выше главной диагонали.

 

Program M5;

Var

A : Array[1..10,1..10] Of Integer;

I, K : Byte; // индексы массива

S : Integer; // сумма элементов

Begin

Randomize;

S:=0; // стартовое обнуление суммы элементов

For I:=1 To 10 Do

Begin

For K:=1 To 10 Do

Begin

A[I,K]:= Random(101);

Write(A[I,K]:6);

If K>I Then S:=S+A[I,K]

End;

Writeln

End;

Writeln('Сумма элементов выше гл. диагонали равна ',S)

End.



<== предыдущая лекция | следующая лекция ==>
Ввод массива | Метод Шеннона – Фано


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


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

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

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


 


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

 
 

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

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