Показать сообщение отдельно
  #3  
Старый 30.12.2022, 13:25
Vladimr Vladimr вне форума
Прохожий
 
Регистрация: 17.03.2021
Сообщения: 41
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Зачем использовать Целочисленное деление (DIV) если в условии задачи стоит просто деление?

Цитата:
Сообщение от Shaft
Код:
 B[m] := a[i,j] div K; 

тогда правильнее использовать просто деление и тогда массив В будет типа real.

и тогда лучше указывать размерность массива B не как у вас
Цитата:
Сообщение от Shaft
Код:
 B: array[0..120] of Integer; 
а
Код:
 B: array[0..n*n] of Real;

И тогда при изменении константы n у вас сразу поменяются размерности массивов А и В.

Далее у вас не выводиться значение K.

Как у вас будет массив с отрицательными цифрами если у вас идет
Цитата:
Сообщение от Shaft
Код:
 A[i,j]:= random(100); 
и в вашем случае они будут всегда положительными?


Со всеми исправлениями код будет выглядеть примерно так
Код:
procedure TForm1.btn1Click(Sender: TObject); 
const n=10;
var
  A: array[0..n,0..n] of Integer;
  B: array[0..n*n] of Real;
  i, j: Integer; //для циклов массива
 m: Integer; //количество положительных чисел
K: Integer; //делитель

begin
  randomize();
  m:= 0;
  K:=5;// Будет вводиться каждый раз вручную? Он может быть только целочисленным или может быть отрицательным или даже дробным числом?
  mmo1.Lines.Add('K= '+inttostr(k)); //что бы значение К выводилось
 
 
  for i:= 0 to n do 
    for j:= 0 to n do A[i,j]:=-25+ random(50); //В данном случае у вас будут числа в диапазоне он -25 до +24 (Будут и положительные и отрицательные)
 
  for i:= 0 to n do
    for j:= 0 to n do
      if(A[i,j] > 0) then
      begin
        B[m] := A[i,j]/K;
        Inc(m);
      end; //Вот здесь происходит поиск положительных чисел в массиве А, их деление и запись в массив В
 
    for i:=0 to m do  mmo1.lines.Add(Floattostr(B[i]));
end;
Ответить с цитированием