- •Екі өлшемді массивтерді өңдеудің типтік алгоритмдері. «Көбік» әдісімен сұрыптау
- •Массивті түгел өңдеу
- •Массивті оның бағандары бойынша өңдеу алгоритмдері:
- •Екі өлшемді массивтерді диагоналдарға қатысты өңдеу алгоритмдері
- •Квадрат матрицаны диагоналдарға қатысты өңдеу (тиімді айналым)
- •«Көбік» әдісімен сұрыптау
- •Сурет 4.1- «Көбікті» сұрыптау
- •Сұрыптау әдістерін қолдануға мысалдар
- •Сұрыптау есептерінің ішінде массив элементтерінің бір бөлігін өсу ретімен және екінші бөлігін кему ретімен сұрыптау қажеттілігі жиі кездеседі.
- •Сурет 4.2
- •Сурет 4.3
Информатикадан олимпиада есептерін шешу әдістері №7 лабораториялық жұмыс.
Екі өлшемді массивтерді өңдеудің типтік алгоритмдері. «Көбік» әдісімен сұрыптау
Екі өлшемді массивтерді өңдеуді шарты түрде мынадай үш топқа бөлуге болады:
Массивті түгел өңдеу;
Қатарлар бойынша немесе бағандар бойынша жекелей өңдеу;
Диагоналдарға қатысты өңдеу.
Келтірілген топтардың әрқайсысын жеке қарастырайық.
Массивті түгел өңдеу
7.1-кесте |
||
Типтік алгоритм |
Бейсик тілінде |
Паскаль тілінде |
Толтыру (екі өлшемді массив элементтерін айналу тәртібі - солдан оңға қарай қатар бойынша) |
… for i=1 to n for j=1 to m input x(i,j) next j next i |
… for i:=1 to n do for j:=1 to m do readln (x[i,j]); … |
Шығару |
… for i=1 to n for j=1 to m print x(i,j);" "; next j next i |
… for i:=1 to n do begin for j:=1 to m do write (x[i,j], ' '); writeln; end; |
Қосынды, көбейтінді |
… p=1 for i=1 to n for j=1 to m s=s+x(i,j) p=p*x(i,j) next j next i |
… s:=0; p:=1; for i:=1 to n do for j:=1 to m do begin s:=s+x[i,j]; p:=p*x[i,j]; end; |
Максимум (минимум) элемент |
… max=x(1,1) min=x(1,1) for i=1 to n for j=1 to m if x(i,j)>max then max=x(i,j) if x(i,j)<min then min=x(i,j) next j,i |
… max:=x[1,1]; min:=x[1,1]; for i:=1 to n do for j:=1 to m do begin if x[i,j]>max then max:=x[i,j]; if x[i,j]<min then min:=x[i,j]; end |
Шарт бойынша таңдау (іздеу) |
for i=1 to n for j=1 to m if {шарт} then {оператор} next j next i |
… for i:=1 to n do for j:=1 to m do if {шарт} then { оператор } … |
Массивті оның қатарлары бойынша өңдеу алгоритмдері:
7.2-кесте |
||
Типтік алгоритм |
Бейсик тілінде |
Паскаль тілінде |
Әр қатардағы элементтердің қосындысы |
… for i=1 to n for j=1 to m s(i)=s(i)+x(i,j) next j next i rem----------- for i=1 to n print s(i);" "; next |
… for i:=1 to n do s[i]:=0; for i:=1 to n do for j:=1 to m do s[i]:=s[i]+x[i,j]; for i:=1 to n do write (s[i]); … |
Әр қатардағы элементтердің көбейтіндісі |
for i=1 to n p(i)=1 next rem--------- for i=1 to n for j=1 to m p(i)=p(i)*x(i,j) next j next i for i=1 to n print p(i);" "; next |
for i:=1 to n do p[i]:=1; for i:=1 to n do for j:=1 to m do p[i]:=p[i]*x[i,j]; for i:=1 to n do write (p[i]); |
Әр қатардағы максимум (минимум) элемент |
for i= 1 to n max(i)=x(i,1) min(i)=x(i,1) next for i=1 to n for j=1 to m if x(i,j)>max(i) then max(i)=x(i,j) if x(i,j)<min(i) then min(i)=x(i,j) next j,i for i=1 to n print max(i);" ";; next for i=1 to n print min(i);" ";; next |
… for i:= 1 to n do begin max[i]:=x[i,1]; min[i]:=x[i,1]; end; for i:=1 to n do for j:=1 to m do begin if x[i,j]>max[i] then max[i]:=x[i,j]; if x[i,j]<min[i] then min[i]:=x[i,j]; end; for i:=1 to n do write (max[i]); writeln; for i:=1 to n do write (min[i]); … |
Әр қатардағы шарт бойынша таңдау (іздеу) |
… for i=1 to n for j=1 to m if {шарт} then {rez(i)=…} next j next i for i=1 to n print rez(i);" "; next |
… for i:= 1 to n do begin rez[i]:=0; end; for i:=1 to n do for j:=1 to m do if {шарт} then < rez[i]:=… >; for i:=1 to n do write (rez[i]); |
