1 Программирование на языке Паскаль Матрицы. 2 Задача: запомнить положение фигур на шахматной доске. 123456 abcdefgh 8 7 6 5 4 3 2 1 00002000 00000000.

Презентация:



Advertisements
Похожие презентации
Программирование на языке Паскаль Часть II Матрицы.
Advertisements

Матрицы 1. 2 Задача: запомнить положение фигур на шахматной доске abcdefgh
1 Программирование на языке Паскаль Максимальный элемент массива.
A[1,1]A[1,2]A[1,3]A[1,4]A[1,5] A[2,1]A[2,2]A[2,3]A[2,4]A[2,5] A[3,1]A[3,2]A[3,3]A[3,4]A[3,5] A[4,1]A[4,2]A[4,3]A[4,4]A[4,5] Двумерный массив можно представить.
Индекс – величина, характеризующая положение элемента, относительно начала массива. МАССИВЫ Конечная, упорядоченная по номерам совокупность значений, объединенных.
Шутилина Л.А., A[1,1]A[1,2]A[1,3]A[1,4]A[1,5] A[2,1]A[2,2]A[2,3]A[2,4]A[2,5] A[3,1]A[3,2]A[3,3]A[3,4]A[3,5] A[4,1]A[4,2]A[4,3]A[4,4]A[4,5]
1 Индекс – величина, характеризующая положение элемента, относительно начала массива. МАССИВЫ Конечная, упорядоченная по номерам совокупность значений,
Программирование на языке Си Часть II Матрицы Учитель информатики: Корогод В.А.
1 Программирование на языке Паскаль Тема 2. Максимальный элемент массива.
Чтобы найти максимальный элемент в массиве и потом производить с ним какие-либо действия, нужно узнать его номер (индекс - I).Чтобы найти максимальный.
Тема: «Понятие квадратная матрица» :17:47.
Язык программирования Pascal Массивы А. Жидков. Массивы Массив – поименованный набор однотипных элементов, каждый из которых имеет свой номер, (индекс).
Program maxsimum; const n=10; var a:array [1..n] of integer; max,i:integer;begin ВВОД ЭЛЕМЕНТОВ МАССИВА; max:=a[1]; for i:=2 to n do if a[i]> max then.
1 Программирование на языке Паскаль Обработка массивов.
Массивы – структурированный тип данных, состоящий из фиксированного числа элементов одинакового типа, имеющих общее имя. Массив.
Массивы Материалы к урокам по программированию. МАССИВ это УПОРЯДОЧЕННАЯ последовательность данных ОДНОГО ТИПА. Массивы относятся к структурированным.
Чтобы найти максимальный элемент в массиве и потом производить с ним какие-либо действия, нужно узнать его номер (индекс - I). Для этого вначале будем.
Тема: «Понятие массива. Назначение. Тип. Размер. Размерность. Одномерный массив» :56:36.
Тема: « Вставка- удаление элементов массива » :18:06.
Двумерным массивом называется совокупность данных, каждое значение которых, зависит от его положения в строке и в столбце.
Транксрипт:

1 Программирование на языке Паскаль Матрицы

2 Задача: запомнить положение фигур на шахматной доске abcdefgh c6 A[6,3]

3 Матрицы Матрица – это прямоугольная таблица чисел. Матрица – это массив, в котором каждый элемент имеет два индекса (номер строки и номер столбца) A строка 2 столбец 3 ячейка A[3,4]

4 Матрицы Объявление: const N = 3; M = 4; var A: array[1..N,1..M] of integer; B: array[-3..0,-8..M] of integer; Q: array['a'..'d',False..True] of real; const N = 3; M = 4; var A: array[1..N,1..M] of integer; B: array[-3..0,-8..M] of integer; Q: array['a'..'d',False..True] of real; Ввод с клавиатуры: for i:=1 to N do for j:=1 to M do begin write('A[',i,',',j,']='); read ( A[i,j] ); end; for i:=1 to N do for j:=1 to M do begin write('A[',i,',',j,']='); read ( A[i,j] ); end; Если переставить циклы? ? A[1,1]=25 A[1,2]=14 A[1,3]=14... A[3,4]=54 i i j j for j:=1 to M do for i:=1 to N do begin

5 Матрицы Заполнение случайными числами for i:=1 to N do for j:=1 to M do A[i,j] := random(25) - 10; for i:=1 to N do for j:=1 to M do A[i,j] := random(25) - 10; Какой интервал? ? цикл по строкам цикл по столбцам Вывод на экран for i:=1 to N do begin writeln; end; for i:=1 to N do begin writeln; end; перейти на новую строку for j:=1 to M do write ( A[i,j]:5 ); for j:=1 to M do write ( A[i,j]:5 ); вывод строки Если переставить циклы? ? в той же строке

6 Обработка всех элементов матрицы Задача: заполнить матрицу из 3 строк и 4 столбцов случайными числами и вывести ее на экран. Найти сумму элементов матрицы. program qq; const N = 3; M = 4; var A: array[1..N,1..M] of integer; i, j, S: integer; begin { заполнение матрицы и вывод на экран} S := 0; writeln('Сумма элементов матрицы ', S); end; program qq; const N = 3; M = 4; var A: array[1..N,1..M] of integer; i, j, S: integer; begin { заполнение матрицы и вывод на экран} S := 0; writeln('Сумма элементов матрицы ', S); end; for i:=1 to N do for j:=1 to M do S := S + A[i,j]; for i:=1 to N do for j:=1 to M do S := S + A[i,j];

Создание матрицы 5x4, вывод ее на экран по строкам program Massiv_2; const N = 5; { Число строк } M = 4; { Число столбцов } var Table : array [1..N, 1..М] of integer; { Заказываем область памяти для хранения двумерного массива из N строк и М столбцов } { Вообще говоря, нигде не определено, что первый индекс - это номер строки, а второй - это номер столбца. Так как выводом на экран занимается программист, он сам решает, как ему удобнее. Нам удобнее считать, что номер строки - первый индекс, а номер столбца - второй } i, j : integer; { Переменные для хранения индексов строки и столбца } begin { Заполнение массива датчиком случайных чисел;} randomize; for i:=1 to N do for j:=l to M do Table[i, j]:=Random(100); { Запись случайного числа в массив на место с номером строки i и номером столбца j } { Вывод матрицы на экран по строкам; } for i:=1 to N do begin for j:=1 to M do write(Table[i, j]); writeln { Переход на новую строку после вывода всех элементов строки i } end; readln end.

Найти максимальный элемент каждой строки массива и его индексы (всего массива и его индексы). {Так как элементы могут повторяться, то договоримся, что будем запоминать только индексы первого максимального элемента.} program prim2; uses crt; type mas=array[1..100,1..100] of integer; var a:mas; i,j,n: integer; max,min,i1,j1,i2,j2:integer; begin clrscr; randomize; write('n=');readln(n); for i:=1 to n do begin {Так как тип массива integer, то за начальные значения возьмем.} max: = ; for j:=1 to n do begin {Получаем случайные значения элементов матрицы.} a[i,j]:=random(45)-22; {Выводим элементы матрицы на экран.} write(a[i,j]:4); {Находим максимальный элемент в каждой строке и его индексы.} if a[i,j]>max then begin max:=a[i,j];i1 :=i; j1 :=j; end; end; {Печатаем максимальный элемент в каждой строке и его индекс.} write (' max=', max, ' строка=',i1,' столбец =',j1); writeln; end; readln; end. {Для нахождения максимального элемента всего массива необходимо: - перенести начальный максимум на одну строку выше; - перенести печать максимального элемента на две строки вниз.}

Найти сумму всех элементов двумерного массива и сумму элементов каждой строки. program prim J; uses crt; type mas=array[1..100, ] of integer; var a:mas; i,j,n,s,sl :integer; begin clrscr; randomize; write('n=');readln(n); for i:=1 to n do begin for j:=1 to n do begin {Получаем случайные значения элементов матрицы.} a[i,j]=random(45)-22; write(a[i,j]:4); {Находим сумму элементов.} s:=s+a[i,j]; sl:=sl+a[i,j]; end; {Печатаем сумму всех элементов каждой строки и обнуляем значение суммы.} writeln('сумма строки =',s);s:=0; writeln; end; writeln('сумма всех элем. sl=',sl); readln; end. var a:array [1..5,1..8] of integer; x,y,x1,y1:integer; begin randomize; x1:=1;y1:=1; for x:=1 to 5 do begin writeln; for y:=1 to 8 do begin a[x,y]:=random(20)-10; write(a[x,y]:3,' '); end; writeln; for x:=1 to 5 do for y:=1 to 8 do if a[x1,y1]a[x,y] then begin x1:=x; y1:=y; end; writeln('MIN a[',x1,',',y1,']=',a[x1,y1]); readln; end.

var a:array [1..5,1..8] of integer; b,c,d,x,y,x1,y1:integer; begin randomize; x1:=1;y1:=1; for x:=1 to 5 do begin writeln; for y:=1 to 8 do begin a[x,y]:=random(20)-10; write(a[x,y]:3,' '); end; writeln; for x:=1 to 5 do for y:=1 to 8 do if a[x1,y1]a[x,y] then begin x1:=x; y1:=y; end; writeln('MIN a[',x1,',',y1,']=',a[x1,y1]); end.

Поменять местами строки с номерами К1 и К2. program prim4; uses art; type mas=array[1..100,1..100] of integer; var a:mas; i,j,n,k1,k2,r: integer; begin clrscr; randomize; write('n=');readln(n); {Создаем и распечатываем двумерный массив.} for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(45)-22; write(a[i,j]:4); end; writeln; end; {Вводим номера строк, которые будем менять местами.} write('stroki k1=k2=');readln(k1,k2); {Меняем значения К1 и К2 строк между собой.} for j:=1 to n do begin r:= a[k1,j];a[k1,j]:=:=a[k2,j]; a[k2,j]:=r; end; {Распечатаем измененный массив.} for i:=1 to n do begin for j:=1 to n do begin write(a[i,j]:4); end; writeln; end; readln; end.

12 Задания Заполнить матрицу из 8 строк и 5 столбцов случайными числами в интервале [-10,10] и вывести ее на экран. "4": Найти минимальный и максимальный элементы в матрице их номера. Формат вывода: Минимальный элемент A[3,4]=-6 Максимальный элемент A[2,2]=10 "5": Вывести на экран строку, сумма элементов которой максимальна. Формат вывода: Строка 2:

13 Операции с матрицами Задача 1. Вывести на экран главную диагональ квадратной матрицы из N строк и N столбцов. A[1,N] A[2,2] A[3,3] A[N,N] for i:=1 to N do write ( A[i,i]:5 ); for i:=1 to N do write ( A[i,i]:5 ); Задача 2. Вывести на экран вторую диагональ. A[N,1] A[N-1,2] A[2,N-1] for i:=1 to N do write ( A[i, ]:5 ); for i:=1 to N do write ( A[i, ]:5 ); N+1-i сумма номеров строки и столбца N+1 A[1,1]

14 Операции с матрицами Задача 3. Найти сумму элементов, стоящих на главной диагонали и ниже ее. Одиночный цикл или вложенный? ? строка 1: A[1,1] строка 2: A[2,1]+A[2,2]... строка N: A[N,1]+A[N,2]+...+A[N,N] S := 0; for i:= 1 to N do S := 0; for i:= 1 to N do цикл по всем строкам for j:= 1 to i do S := S + A[i,j]; for j:= 1 to i do S := S + A[i,j]; складываем нужные элементы строки i

15 Операции с матрицами Задача 4. Перестановка строк или столбцов. В матрице из N строк и M столбцов переставить 2-ую и 4-ую строки j A[2,j] A[4,j] for j:=1 to M do begin c := A[2,j]; A[2,j] := A[4,j]; A[4,j] := c; end; for j:=1 to M do begin c := A[2,j]; A[2,j] := A[4,j]; A[4,j] := c; end; Задача 5. К третьему столбцу добавить шестой. for i:=1 to N do A[i,3] := A[i,3] + A[i,6]; for i:=1 to N do A[i,3] := A[i,3] + A[i,6];

16 Задания Заполнить матрицу из 7 строк и 7 столбцов случайными числами в интервале [-10,10] и вывести ее на экран. Обнулить элементы, отмеченные зеленым фоном, и вывести полученную матрицу на экран. "4": "5":