Родились сегодня:
Антонина


Лидеры рейтинга

ID: 226425

Konstantin Shvetski

Модератор

673

Россия, Северодвинск


ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

326

Россия, пос. Теплоозёрск, ЕАО


ID: 401284

Михаил Александров

Академик

278

Россия, Санкт-Петербург


ID: 325460

CradleA

Академик

211

Беларусь, Минск


ID: 401888

puporev

Профессор

140

Россия, Пермский край


ID: 400815

alexleonsm

6-й класс

130


ID: 137394

Megaloman

Мастер-Эксперт

120

Беларусь, Гомель


8.8.12

06.05.2021

JS: 2.8.16
CSS: 4.5.4
jQuery: 3.6.0
DataForLocalStorage: 2021-05-06 21:16:03-standard


Создание программ на языках Pascal, Delphi и Lazarus.

Администратор раздела: Зенченко Константин Николаевич (Старший модератор)

Консультация онлайн # 200474

Раздел: Pascal / Delphi / Lazarus
Автор вопроса: Жуков Максим (Посетитель)
Дата: 23.03.2021, 00:07 Консультация закрыта
Поступило ответов: 1

Здравствуйте! У меня возникли сложности с таким вопросом:
Преобразование прямоугольной матрицы
Выполнить над прямоугольной матрицей В размером m х n последовательность действий, указанную в задании.
а) Заменить заданным вектором столбцы матрицы В, содержащие хотя бы один нулевой элемент;
б) в полученной матрице вычислить суммы элементов строк, номера которых задаются целочисленным вектором.
Программирование желательно сделать на паскале

Ответ # 280842 от puporev
Здравствуйте, boss.maxim2002777!
Можно решить так.
Код
var b:array[1..10,1..20]of integer;//матрица
    v:array[1..10]of integer;//вектор для замены
    mn:set of byte;//вектор(множество) номеров строк для подсчета суммы
                   //с множеством удобнее работать
    m,n,i,j,k,s:integer;
begin
randomize;
repeat
write('Введите количество строк матрицы от 2 до 10 m=');
readln(m);
until m in [2..10];
repeat
write('Введите количество столбцов матрицы от 2 до 20 n=');
readln(n);
until n in [2..20];
writeln('Исходная матрица');
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    b[i,j]:=random(10);
    write(b[i,j]:3);
   end;
  writeln;
 end;
writeln('Вектор для замены столбцов');
for i:=1 to m do
 begin
  v[i]:=10+random(90);
  write(v[i]:3);
 end;
writeln;
writeln('Замена стобцов в которых есть нулевой элемент');
k:=0;
for j:=1 to n do
 begin
  i:=1;
  while(i<=m)and(b[i,j]<>0)do inc(i);
  if i<=m then
   begin
    k:=1;
    for i:=1 to m do
    b[i,j]:=v[i];
   end;
 end;
if k=0 then writeln('Столбцов с нолями нет')
else
 for i:=1 to m do
  begin
   for j:=1 to n do
   write(b[i,j]:3);
   writeln;
  end;
writeln('Вектор номеров строк для подсчета суммы');
mn:=[];
for i:=1 to m do
 begin
  if random(2)=1 then
   begin
    include(mn,i);
    write(i:3);
   end;
 end;
writeln;
s:=0;
for i:=1 to m do
if i in mn then
for j:=1 to n do
s:=s+b[i,j];
write('Сумма в строках номера которых есть в векторе=',s)
end.

puporev

Профессор
23.03.2021, 07:09
Мини-форум консультации # 200474

Нет сообщений в мини-форуме

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Лучшие эксперты раздела

puporev

Профессор

Рейтинг: 140

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 74

Вадим Исаев ака sir Henry

Мастер-Эксперт

Рейтинг: 2

Степанов Иван /REDDS

4-й класс

Рейтинг: 1

Лысков Игорь Витальевич

Мастер-Эксперт

Рейтинг: 0

Асмик Гаряка

Советник

Рейтинг: 0