Предмет: Информатика,
автор: erikkov
Пожалуйста помогите в Pascal ABC .
(Двумерные массивы).
Указание: для каждой задачи создайте алгоритм и программу. Заполните двумерный числовой массив B(6,6) случайными целыми числами в интервале [-65; 65]. Введите значения элементов массива в виде матрицы, причем на каждый элемент отведите 4 позиции. Ответ каждой задачи следует выводить с новой строки и с пояснительным текстом. Кроме того, следует каждый раз производить вывод массива на экран, если в нем произошли изменения : перестановка, замена, изменение значения элементов и т. д.
Задание №1.Найдите сумму положительных элементов третьего столбца.
Задание №2.Обнулите отрицательные элементы, стоящие в четных строках.
Ответы
Автор ответа:
1
Поскольку к элементам третьего столбца массива можно обращаться, как B[i,3], достаточно использовать цикл по строкам.
Для просмотра только четных строк массива достаточно начать со второй и менять номер строки с шагом 2.
const
n = 6;
var
b:array[1..n,1..n] of integer;
i,j,s: integer;
begin
Randomize;
Writeln('Исходный массив');
for i := 1 to n do
begin
for j := 1 to n do
begin
b[i,j]:=Random(131)-65;
Write(b[i,j]:4)
end;
Writeln
end;
{ задание 1 }
s:=0;
for i:=1 to n do
if b[i,3]>0 then s:=s+b[i,3];
Writeln('Значение найденной суммы: ',s);
{ задание 2 }
i:=2;
while i<=n do begin
for j:=1 to n do
if b[i,j]<0 then b[i,j]:=0;
i:=i+2
end;
Writeln('Результирующий массив');
for i:=1 to n do
begin
for j:=1 to n do Write(b[i,j]:4);
Writeln
end
end.
Тестовое решение:
Исходный массив
1 -28 -22 -23 -15 -35
-34 -44 57 43 33 62
56 5 58 -32 -6 -52
24 -15 -54 -45 41 32
40 31 -31 28 -31 46
7 31 56 -16 -62 -52
Значение найденной суммы: 171
Результирующий массив
1 -28 -22 -23 -15 -35
0 0 57 43 33 62
56 5 58 -32 -6 -52
24 0 0 0 41 32
40 31 -31 28 -31 46
7 31 56 0 0 0
Для просмотра только четных строк массива достаточно начать со второй и менять номер строки с шагом 2.
const
n = 6;
var
b:array[1..n,1..n] of integer;
i,j,s: integer;
begin
Randomize;
Writeln('Исходный массив');
for i := 1 to n do
begin
for j := 1 to n do
begin
b[i,j]:=Random(131)-65;
Write(b[i,j]:4)
end;
Writeln
end;
{ задание 1 }
s:=0;
for i:=1 to n do
if b[i,3]>0 then s:=s+b[i,3];
Writeln('Значение найденной суммы: ',s);
{ задание 2 }
i:=2;
while i<=n do begin
for j:=1 to n do
if b[i,j]<0 then b[i,j]:=0;
i:=i+2
end;
Writeln('Результирующий массив');
for i:=1 to n do
begin
for j:=1 to n do Write(b[i,j]:4);
Writeln
end
end.
Тестовое решение:
Исходный массив
1 -28 -22 -23 -15 -35
-34 -44 57 43 33 62
56 5 58 -32 -6 -52
24 -15 -54 -45 41 32
40 31 -31 28 -31 46
7 31 56 -16 -62 -52
Значение найденной суммы: 171
Результирующий массив
1 -28 -22 -23 -15 -35
0 0 57 43 33 62
56 5 58 -32 -6 -52
24 0 0 0 41 32
40 31 -31 28 -31 46
7 31 56 0 0 0
Похожие вопросы
Предмет: Английский язык,
автор: 123459321
Предмет: Русский язык,
автор: mrali2016
Предмет: Другие предметы,
автор: Лизик2090
Предмет: Геометрия,
автор: db800649
Предмет: Математика,
автор: tkim19096