Ïðèìåð1: Äàí äâóìåðíûé ìàññèâ.  êàæäîé ñòðîêå âñå åãî ýëåìåíòû, íå ðàâíûå íóëþ, ïåðåïèñàòü (ñîõðàíÿÿ ïîðÿäîê) â íà÷àëî ñòðîêè, à íóëåâûå ýëåìåíòû - â êîíåö ìàññèâà. Íîâûé ìàññèâ íå çàâîäèòü.
Ýòàïû ðåøåíèÿ çàäà÷è: 1. Ñóòü îäíîãî èç àëãîðèòìîâ ðåøåíèÿ äàííîé çàäà÷è ñîñòîèò â òîì ÷òîáû "ïðîñìàòðèâàòü" ìàññèâ ïîñòðî÷íî è íàõîäèòü â êàæäîé ñòðîêå ïàðó (0:÷èñëî), à çàòåì ìåíÿòü èõ ìåñòàìè ìåæäó ñîáîé è òàê äî òåõ ïîð ïîêà â ñòðîêå òàêèõ ïàð íå îêàæåòñÿ.
2. Íàïèøåì ïðîãðàììó íà ïñåâäî ïàñêàëå:
program example1;
var
V:array[1..100,1..100] of integer;
m,n, i,j, c: integer;
flag: boolean;
begin
<ââîä ðàçìåðíîñòè ìàññèâà m*n>
<çàïîëíåíèå ÿ÷ååê ìàññèâà>
for i:=1 to m do
repeat
flag:= true;
for j:=1 to n-1 do
if (v[i,j]=0) and (v[i,j+1]<>0) then begin
<ïîìåíÿòü èõ ìåñòàìè>
flag:= false;
end;
until flag;
<Ïå÷àòü ìàññèâà>
readln;
end.
3.Ñîñòàâèì áëîê ñõåìó àëãîðèòìà
Äåòàëèçèðóåì áëîê "Óïîðÿäî÷èâàåì 1-þ ñòðîêó"
Áëîê ñõåìà àëãîðèòìà öåëèêîì:
4.Ïðèâåäåì ïðîãðàììó íà ÿçûêå Ïàñêàëü:
program example1;
var
V:array[1..100,1..100] of integer;
m,n, i,j, c: integer;
flag: boolean;
begin
write('Ââåäèòå ðàçìåðíîñòü ìàññèâà m-n> '); readln(m,n);
for i:= 1 to m do
for j:= 1 to n do begin
write('V[',i,',',j,']= '); readln(V[i,j]);
end;
for i:=1 to m do
repeat
flag:= true;
for j:=1 to n-1 do
if (v[i,j]=0) and (v[i,j+1]<>0) then begin
c:=v[i,j]; v[i,j]:=v[i,j+1]; v[i,j+1]:=c;
flag:= false;
end;
until flag;
for i:= 1 to m do begin
for j:= 1 to n do write(V[i,j]:2);
writeln
end;
readln;
end.
Êîíòðîëüíûå âîïðîñû
Êàêèì îáðàçîì îïðåäåëÿþòñÿ ïåðåìåííûå òèïà ìàññèâ (îäíîìåðíûé è äâóìåðíûé)?
Êàê îñóùåñòâëÿåòñÿ äîñòóï ê îòäåëüíîìó ýëåìåíòó îäíîìåðíîãî è äâóìåðíîãî ìàññèâà?