Вставить перед всеми строками, первый элемент которых делится на 3,строку из нулей - Pascal
Формулировка задачи:
Дан двумерный массив размером n*m, заполненный случайным образом.
1)Вставить перед всеми строками, первый элемент которых делится на 3,строку из нулей.
Начало есть
нужно продолжить выполнить 1 пункт(Вставить перед всеми строками, первый элемент которых делится на 3,строку из нулей.)
const m=3; n=7;
type mtr=array[1..m,1..2*n] of integer;
procedure Vivod(a:mtr;x,y:integer);
var i,j:integer;
begin
for i:=1 to x do
begin
for j:=1 to y do
write(a[i,j]:4);
writeln;
end;
writeln;
end;
var b,b1:mtr; n1,i,j,k,max,a,z:integer; f:boolean;
begin
for i:=1 to m do
for j:=1 to n do
b[i,j]:=random(50);
writeln('Исходная матрица:');
Vivod(b,m,n);
b1:=b;Решение задачи: «Вставить перед всеми строками, первый элемент которых делится на 3,строку из нулей»
textual
Листинг программы
const m=5; n=7;
var
a: array [1..2*m,1..n] of Integer;
i, j, k, mm: Integer;
begin
Randomize;
for i:=1 to m do for j:=1 to n do a[i,j]:=1+Random(9);
WriteLn('A =');
for i:=1 to m do begin
for j:=1 to n do Write(' ',a[i,j]:3); WriteLn;
end;
mm:=m; for i:=1 to m do if a[i,1] mod 3=0 then Inc(mm);
i:=m; k:=mm;
while i<k do begin
for j:=1 to n do a[k,j]:=a[i,j];
if a[i,1] mod 3=0 then begin
Dec(k); for j:=1 to n do a[k,j]:=0;
end;
Dec(i); Dec(k);
end;
WriteLn('A''=');
for i:=1 to mm do begin
for j:=1 to n do Write(' ',a[i,j]:3); WriteLn;
end;
end.
Объяснение кода листинга программы
- Объявляется константа
mиnсо значениями 5 и 7 соответственно. - Объявляется массив
aразмером 2*m на n, тип элементов - Integer. - Объявляются переменные:
i,j,k,mm- все типа Integer. - Происходит инициализация генератора случайных чисел.
- Циклически заполняется двумерный массив
aслучайными числами от 1 до 9. - Выводится на экран содержимое массива
a. - Подсчитывается количество строк в массиве
а, удовлетворяющих условию: первый элемент строки делится на 3. В случае соответствия данному условию, переменнаяmmувеличивается на 1. - Инициализируются переменные
iиk,iполучает значениеm,kполучает значениеmm. - Выполняется цикл, который копирует значения из
i-ой строки массиваaвk-ую строку массиваa. Если первый элементi-ой строки делится на 3, уменьшаемkна 1 и заполняемk-ую строку массиваaнулями. Уменьшаем значенияiиkна 1. - Выводится на экран измененное содержимое массива
a.