Mожете помочь конвертировать этот js код в pascal

347
05 ноября 2021, 02:20
const m = [[32,8.8,-8],[5,8,1],[7,36,2]];
const result = [];
for(let i = 0; i < m.length; i++){
  let arr  = [];
  for(let j = 0; j < m[i].length; j++ ){
    if(checkNumber(m[i][j])){
      arr.push(m[i][j])
    }
  }
  if (arr.length == 0){
    arr.push(0)
  }
  result.push(getMax(arr))
} 
console.log(result)
function checkNumber(number){
  let num  = 1;
  while( num < number){
    num *=2
  }
  return  num == number
}
function getMax(arr){
  let min = arr[0]
  for(let i = 0; i< arr.length; i++){
      if(min < arr[i]){
        min =  arr[i]
      }
  }
  return min
}
Answer 1

Вы не указали диалект паскаля! Вот решения для паскаля из стандарта ISO 7185:

PROGRAM Main;
CONST
    { Constant N is the number of elements in the input matrix.  }
    N = 3;
TYPE
    { Types Line and Matrix are used for the input matrix.  }
    Line = ARRAY[1 .. N] OF Real;
    Matrix = ARRAY[1 .. N] OF Line;
VAR
    { Matrix m is the initial array.  }
    m: Matrix =
    (
          (32, 8.8, -8)
        , ( 5,   8,  1)
        , ( 7,  36,  2)
    );
    { Integers i and j are loop variables.  }
    i, j: Integer;
    { Array result is used to calculate the result of the programme.  }
    result: Line;
    { Array arr and integer arrLength are used in the result computation.
    Allocate an amount and use an additional variable to keep track of the
    actual number of result values.  }
    arr: Line;
    arrLength: Integer;
FUNCTION CheckNumber(number: Real): Boolean;
VAR num: Real;
BEGIN
    num := 1;
    WHILE num < number DO
    BEGIN
        num := num * 2
    END;
    CheckNumber := num = number
END;
FUNCTION GetMax(VAR arr: Line; n: Integer): Real;
VAR
    i: Integer;
    max: Real;
BEGIN
    max := arr[1];
    FOR i := 1 TO n DO
    BEGIN
        IF arr[i] > max THEN
        BEGIN
            max := arr[i]
        END
    END;
    GetMax := max
END;
PROCEDURE WriteLine(VAR arr: Line; n: Integer);
VAR
    i: Integer;
BEGIN
    FOR i := 1 TO n DO
    BEGIN
        Write(arr[i]: 5: 2);
        IF i <> n THEN
        BEGIN
            Write(', ')
        END
    END;
    WriteLn
END;
BEGIN
    FOR i := 1 TO N DO
    BEGIN
        arrLength := 0;
        FOR j := 1 TO N DO
        BEGIN
            IF CheckNumber(m[i, j]) THEN
            BEGIN
                arrLength := arrLength + 1;
                arr[arrLength] := m[i, j]
            END
        END;
        IF arrLength = 0 THEN
        BEGIN
            arrLength := 1;
            arr[arrLength] := 0
        END;
        result[i] := GetMax(arr, arrLength)
    END;
    WriteLn('The result is:');
    WriteLine(result, N)
END.

Чем новее диалект, тем больше можно сократить.

READ ALSO
NodeJS - Поиск файла циклом

NodeJS - Поиск файла циклом

Возникла проблема, которой в других языках просто не существует, либо я попросту не умею гуглить (да и знания js практически нулевые)Ближе...

187
Правильно выбранный селектор для .map

Правильно выбранный селектор для .map

Не вполне понимаю механику селекторов в jsЕсть таблица

211
Правильно ли будет использовать только для некоторых страниц react?

Правильно ли будет использовать только для некоторых страниц react?

Правильно ли будет использовать только для некоторых страниц react? и делать на каждой странице отдельный appjs который будет вставлять компоненты...

84
Подгрузка контета при скролинге React.js

Подгрузка контета при скролинге React.js

Получить данные в json, завожу их в stateВывожу через

152