Составить процедуру обнуления всех положительных элементов массива - Pascal ABC
Формулировка задачи:
Составить процедуру обнуления всех положительных элементов в одномерном массиве A.
С помощью этой процедуры обнулить все положительные элементы в n-м и k-м столбце произвольной матрицы B.
Помогите!
Решение задачи: «Составить процедуру обнуления всех положительных элементов массива»
textual
Листинг программы
uses crt;
const nmax=20;
type mas=array[1..nmax] of integer; //Г¬Г*Г±Г±ГЁГў=ñòîëáåö Г¬Г*òðèöû
mtr=array[1..nmax] of mas; //Г¬Г*òðèöГ*=Г¬Г*Г±Г±ГЁГў ñòîëáöîâ
procedure zero(var x:mas;n:byte); //ïðîöåäóðГ* Г§Г*ìåГ*Г»
var i:byte;
begin
for i:=1 to n do
if x[i]>0 then x[i]:=0;
end;
var b:mtr;
r,c,i,j,n,k:byte;
begin
randomize;
repeat
write('Êîëè÷åñòâî ñòðîê îò 1 äî ',nmax,' r=');
read(r);
until r in [1..nmax];
repeat
write('Êîëè÷åñòâî ñòîëáöîâ îò 2 äî ',nmax,' c=');
read(c);
until c in [2..nmax];
writeln('ГЊГ*òðèöГ* B:');//Г§Г*ïîëГ*ГЁГ¬ ñòîëáöû Г¬Г*òðèöû
for j:=1 to c do
for i:=1 to r do
repeat
b[j][i]:=-5+random(11);
until b[j][i]<>0; //ГЎГҐГ§ Г*îëåé
for i:=1 to r do //âûâåäåì ïîñòðî÷Г*Г®
begin
for j:=1 to c do
write(b[j][i]:3);
writeln
end;
repeat
writeln('Ââåäèòå Г*îìåðГ* äâóõ Г°Г*Г§Г*ûõ ñòîëáöîâ îò 1 äî ',c);
read(n,k);
until(n in [1..c])and(k in [1..c])and(k<>n);
zero(b[n],r);
zero(b[k],r);
writeln('Г‡Г*ìåГ*Г* ïîëîæèòåëüГ*ûõ Гў ñòîëáöГ*Гµ ',n,',',k,' Г*Г* Г*îëè');
for i:=1 to r do
begin
for j:=1 to c do
write(b[j][i]:3);
writeln
end;
end.
Объяснение кода листинга программы
- В начале кода объявляются переменные
nmax,masиmtr. Переменнаяnmaxиспользуется для ограничения размера массива, а переменныеmasиmtrиспользуются для хранения и обработки массивов. - Затем определяется процедура
zero, которая принимает массивxи байтnв качестве параметров. Внутри процедуры происходит циклfor, который выполняетсяnраз. Для каждого элементаx[i]проверяется условиеx[i] > 0. Если это условие истинно, то значениеx[i]устанавливается равным нулю. - Далее объявляется переменная
b, которая является массивомmtr. - Затем начинается цикл
repeat, который выполняется до тех пор, пока не будет прочитано значениеrдля первого элемента массиваb. Внутри цикла выводится сообщение с помощью функцииwriteи читается значениеrс помощью функцииread. Значениеrзатем используется для создания массиваb. - После этого начинается цикл
for, который выполняетсяcраз. Для каждого элементаb[j]проверяется условиеb[j] <> 0. Если это условие истинно, то выводится сообщение с помощью функцииwriteи читается значениеkс помощью функцииread. Значениеkзатем используется для вызова процедурыzeroдля элементаb[n]. - После этого вызывается процедура
zeroдля элементаb[k]. - Цикл
repeatзавершается, когда значениеnравноcилиkне равноn. - Конец процедуры
zero. - Конец программы.