Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Writeln

Begin

Else

End

Begin

Примеры задач с двумерными массивами

End.

End

Writeln

Begin

Begin

End.

Begin

Ввод-вывод двумерных массивов

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

Пример 5.11. Ввести матрицу С размера 6 ´ 11, нумерация индексов которой начинается с 0.

var i, k: integer;

c: array [0..5,0..10] of real;

for i:=0 to 5 do

for k:=0 to 10 do

read (c[i,k]);

 

В приведенном фрагменте цикл начинается с присваивания параметру i его начального значения, равного нулю, после чего выполняется внутренний цикл с параметром k, последовательно принимающим значения 0, 1, 2,...,10, т.е. вводятся элементы нулевой строки матрицы c[0,0], c[0,1], c[0,2],..., c[0,10]. Далее произойдет возврат во внешний цикл, значение переменной i увеличится на 1. При новом значении i снова будет выполнен внутренний цикл, т.е. введены элементы следующей строки. Операции ввода будут продолжаться до тех пор, пока не будут введены все элементы массива.

Пример 5.12. Написать фрагмент программы, содержащий вывод матрицы C (10 ´ 20) в виде таблицы, содержащей 10 строк и 20 столбцов. Индексацию строк начать с –1, столбцов с 0.

 

var c:array [-1..8,0..19] of real;

i,j:integer;

.

.

.

for i:= -1 to 8 do

for j:=0 to 19 do write(c[i,j]:8:3);

 

Тело внутреннего цикла содержит два оператора: for и writeln. После того, как оператор for выведет очередную строку матрицы, оператор writeln осуществляет переход на новую строку.

 

Пример 5.13. Дана матрица MAT размера 5 на 5, состоящая из вещественных элементов. Поменять местами строки матрицы, содержащие максимальный и минимальный элементы.

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

Первая задача является разновидностью типовой задачи поиска максимума или минимума. Отличие от типовой заключается в том, что определяются не сами максимальный и минимальный элементы матрицы, а их индексы. Для хранения номеров строк в процессе счета используются переменные i1 – для минимального элемента и i2 для максимального.

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

 

const n=5;

var mat: array [1..n, 1..n] of real;

i, j, i1, i2: integer;

max, min, b: real;

write (‘введите матрицу ‘);

for i:=1 to n do

for j:=1 to n do read (mat[i,j]);

max:= mat[1,1]; i1:=1; { индекс минимального элемента }

min:=mat[1,1]; i2:=1; { индекс максимального элемента }

for i:=1 to n do

for j:=1 to n do

if mat [ i, j] > max then

begin max:=mat[i,j];

i2:= i; {Запомнить номер строки

нового максимума }

if mat [i, j] < min then

begin min:=mat[i,j];

i1:= i; { Запомнить номер строки

нового минимума }

end;

for j:=1 to n do

begin b:=mat[i1,j]; mat[i1,j]:=mat[i2,j]; mat[i2,j]:=b;

end;

for i:=1 to n do { Вывести измененный массив }

for j:=1 to n do write (mat[i,j]:10:5);

<== предыдущая лекция | следующая лекция ==>
Пример 5.10 | Вводные понятия
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 291; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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