КАТЕГОРИИ: Архитектура-(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; … Данный фрагмент позволит вывести элементы массива в виде матрицы. Рассмотрим типовые задачи обработки двумерных массивов с использованием вложенных циклов. Задача. Составить программу подсчета суммы и произведения элементов двумерного массива вещественных чисел. Таблица идентификаторов
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. Задача. Задана квадратная матрица целых чисел. Составить программу подсчета суммы элементов, расположенных над главной диагональю. Таблица идентификаторов
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. Задача. Задана целочисленная квадратная матрица. Определить является ли она симметричной относительно главной диагонали. Таблица идентификаторов
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-ого столбца двумерного массива.
Таблица идентификаторов
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). Упорядочить элементы каждой строки по возрастанию.
Таблица идентификаторов
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; Просмотров: 780; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |