Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Обработка двумерных массивов




Вывод элементов двумерного массива

Ввод элементов двумерного массива

for i:=1 to n do

for j:=1 to m do

readln(a[i]);

Данный фрагмент позволит ввести элементы массива по строкам.

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

for i:=1 to n do

begin

for j:=1 to n do

write(a[I,j],‘ ‘);

writeln;

end;

Данный фрагмент позволит вывести элементы массива в виде матрицы.

Рассмотрим типовые задачи обработки двумерных массивов с использованием вложенных циклов.

Задача.

Составить программу подсчета суммы и произведения элементов двумерного массива вещественных чисел.

Таблица идентификаторов

Наименование переменной Обозначения в программе
  Имя массива a
  Количество строк n
  Количество столбцов m
  Индексы массива I,j
  Сумма элементов s
  Произведение элементов p

program matr;

uses

crt;

var

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

i, j, n, m: integer;

s,p:real;

begin

clrscr;

writeln(‘ Введите n<=10, m<=10 ’);

readln (n,m);

writeln(‘ Введите элементы массива по строкам ’);

for i:=1 to n do

for j:=1 to m do

readln(a[i, j]);

s:=0; p:=1;

{ поиск суммы и произведения }

for i:=1 to n do

for j:=1 to m do

begin

s:=s + a[i,j];

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

end;

writeln(‘ Сумма элементов s=’,s:8:3);

writeln(‘ Произведение элементов p=’,p:8:3);

readln;

end.

Задача.

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

Таблица идентификаторов

Наименование переменной Обозначения в программе
  Имя массива a
  Количество строк и столбцов n
  Индексы массива I,j
  Сумма элементов над главной диагональю s

program matr_1;

uses

crt;

var

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

i, j, n, m: integer;

s,p: real;

begin

clrscr;

writeln(‘ Введите n<=10, m<=10 ’);

readln (n,m);

writeln(‘ Введите элементы массива по строкам ’);

for i:=1 to n do

for j:=1 to m do

readln(a[i,j]);

for i:=1 to 3 do

for j:=i +1 to 3 do

s:=s+a[i,j];

writeln('Сумма элементов s=', s);

readln;

end.

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

Для поиска суммы элементов над главной диагональю во внутреннем цикле задан закон изменения параметра внутреннего цикла:

j:=i+1.

Задача.

Задана целочисленная квадратная матрица. Определить является ли она симметричной относительно главной диагонали.

Таблица идентификаторов

Наименование переменной Обозначения в программе
  Имя массива a
  Количество строк и столбцов n
  Индексы массива I,j
  Флажок f

program matr_2;

uses

crt;

var

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

i, j, n, f: integer;

begin

clrscr;

writeln(‘ Введите n<=10 ’);

readln (n,m);

writeln(‘ Введите элементы массива по строкам ’);

for i:=1 to n do

for j:=1 to n do

readln(a[i,j]);

f:=0

for i:=1 to n do

for j:=i to n do

if a[i,j]<>a[j,i] then f:=1;

if f=0 then writeln(‘ матрица симметрична’)

else writeln (‘матрица не симметрична’);

readln;

end.

При решении этой задачи сравниваются элементы расположенные над главной диагональю (a[ i,j ]) с элементами, расположенными под главной диагональю (a[ j,i ]).

Задача.

Задана матрица вещественных чисел. Образовать одномерный массив, где каждый j – й элемент равен произведению элементов j-ого столбца двумерного массива.

 

Таблица идентификаторов

Наименование переменной Обозначения в программе
  Имя двумерного массива a
  Имя одномерного массива b
  Количество строк n
  Количество столбцов m
  Индексы массива I,j

 

program matr_3;

uses crt;

var

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

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

i, j, n, f: integer;

begin

clrscr;

writeln(‘ Введите n<=10, m<=10 ’); readln (n,m);

writeln(‘ Введите элементы массива по строкам ’);

for i:=1 to n do

for j:=1 to m do

readln (a[i, j]);

writeln(‘ Исходная матрица ’);

for i:=1 to n do

begin

for j:= 1 to n do

write(a[I,j], ‘ ‘);

writeln;

end;

writeln(‘ Образованный одномерный массив ’);

for j:=1 to m do

begin

b[ j ]:=1;

{ накапливается произведение элементов j столбца }

for i:=1 to n do

b[ j ]:= b[ j ] * a[ i, j ];

write(b[ j], ‘ ‘);

end;

readln;

end.

 

Задача.

Задана целочисленная матрица a(m*n). Упорядочить элементы каждой строки по возрастанию.

 

Таблица идентификаторов

Наименование переменной Обозначения в программе
  Имя двумерного массива a
  Количество строк, столбцов n, m
  Индексы массива I,j
  Флажок f
  Дополнительная переменная для обмена соседних элементов p

program mart_4;

uses crt;

var

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

i,j,n,f: integer;

begin clrscr;

writeln(‘ Введите n<=10, m<=10 ’); readln (n,m);

writeln(‘ Введите элементы массива по строкам ’);

for i:=1 to n do

for j:=1 to m do

readln(a[i, j]);

writeln(‘ Исходная матрица ’);

for i:=1 to n do

begin

for j:=1 to n do

write(a[I,j],‘ ‘);

writeln;

end;

{ переход от строки к строке }

for i:=1 to n do

{ сортировка i-ой строки }

repeat

f:=0;

for j:=1to m-1 do

if a[i,j]>a[i,j+1] then

begin p:=a[i,j]; a[i,j]=a[i,j+1]; a[i,j+1]:=p; f:=1; end;

until f=0;

writeln(‘ Преобразованная матрица ’);

for i:=1 to n do

begin

for j:= 1 to n do

write(a[I,j], ‘ ‘);

writeln;

end;

readln;

end.

f =0 – признак того, что все элементы данной строки упорядочены.




Поделиться с друзьями:


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


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



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




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