Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2021, 22:31   #1
LevMark
Пользователь
 
Регистрация: 28.03.2021
Сообщений: 24
По умолчанию В каком месте необходимо вызвать процедуру setlength для y?

https://www.programmersforum.ru/showthread.php?t=339427- ссылка на изначально заданный вопрос.
Код:
type
  matrix = array of array of integer;
  arr = array of integer;

procedure matr2(c: char; var x: matrix; var m, n: integer);
var
  i, j: integer;
begin
  writeln('Введите количество строк в матрице ' + c + ': ');
  readln(m);
  writeln('Введите количество столбцов в матрице ' + c + ': ');
  readln(n);
  SetLength(x, m);
  writeln('Матрица ', c, ':'); 
  for i := 0 to m-1 do 
  begin
  SetLength(x[i], n);
    for j := 0 to n-1 do 
    begin
      x[i, j] := -99 + random(199); 
      write(x[i, j]:4)
    end;
    writeln
  end
end;

procedure el(const x: matrix; const m, n: integer; var y: arr);
var
  i, j: integer;
begin
  for j := 1 to n do y[j] := 0;//ошибка в этой строчке(ссылка на объект не указывает на экземпляр объекта)
  for i := 1 to m do 
    for j := 1 to n do 
      if x[i, j] < 0 then inc(y[j]);
end;

procedure poell(var y: arr; const n: integer);
var
  j: integer;
begin
  writeln('Количество отрицательных элементов по столбцам:'); 
  for j := 1 to n do write(y[j]:4); 
  writeln; 
  writeln
end;


var
  a, b: matrix;
  c, d: arr;
  i, j, k, e:integer;

begin
  randomize; 
  matr2('A', a, i, j); 
  el(a, i, j, c); 
  poell(c, j); 
  matr2('B', b, k, e); 
  el(b, k, e, d); 
  poell(d, e); 
  readln;
  end.

Последний раз редактировалось BDA; 22.05.2021 в 23:30. Причина: добавлен тег CODE
LevMark вне форума Ответить с цитированием
Старый 22.05.2021, 23:30   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Можно в el:
Код:
procedure el(const x: matrix; const m, n: integer; var y: arr);
var
  i, j: integer;
begin
  SetLength(y, n);
  for j := 0 to n - 1 do y[j] := 0;
  for i := 0 to m - 1 do
    for j := 0 to n - 1 do
      if x[i, j] < 0 then inc(y[j]);
end;

procedure poell(var y: arr; const n: integer);
var
  j: integer;
begin
  writeln('Количество отрицательных элементов по столбцам:');
  for j := 0 to n - 1 do write(y[j]:4);
  writeln;
  writeln
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В каком месте в самой теме блокирует смену постоянных ссылок? Sergeyopt WordPress и другие CMS 0 20.12.2018 05:23
В каком месте файла хранится информация о его структуре hammer4 Помощь студентам 4 20.08.2010 16:11
как в другом месте программы вызвать case 0? student_) Общие вопросы по Java, Java SE, Kotlin 9 11.10.2008 13:55
считает что ReOpArr это обычный массив и не может применить к нему процедуру SetLength. Dunpeal Общие вопросы Delphi 2 24.12.2007 08:07
вызвать процедуру для tray.OnClick и закрузить в нее нужную иконку KORN Компоненты Delphi 8 02.10.2007 00:17