packages feed

funcons-simple-0.1.0.3: tests/Kdiverse/Kdiverse5.smp

// copied from K: tests/diverse/matrix.simple
// This program tests multi-dimensional arrays.

function readArray(a) {
  var m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1;
  for(var i=0; i<=m; ++i) {
    print("Line ",i+1," (",n+1," elements): ");
    for(var j=0; j<=n; ++j) { a[i][j] = read(); }
  }
}

function printArray(a) {
  var m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1;
  for(var i=0; i<=m; ++i) {
    print("Line ",i+1," (",n+1," elements):");
    for(var j=0; j<=n; ++j) { print(" ",a[i,j]); }
  print("\n");
  }
}

function transArray(a) {
  var  m = sizeOf(a) - 1, n = sizeOf(a[0]) - 1, b[n+1,m+1];
  for (var i=0; i<=m; ++i) {
    for (var j=0; j<=n; ++j) {
      b[j,i] = a[i,j];
    }
  }
  return b;
}

function mulArray(a,b) {
  var m = sizeOf(a) - 1, n = sizeOf(b) - 1, p = sizeOf(b[0]) - 1, c[m+1,p+1];
  for (var i=0; i<=m; ++i) {
    for (var j=0; j<=p; ++j) {
      c[i,j] = 0;
      for (var k=0; k<=n; ++k) {
        c[i,j] = c[i,j] + a[i,k] * b[k,j];
      }
    }
  }
  return c;
}

function main() {
  print("Input the number of lines and columns (two natural numbers): ");
  var x = read(), y = read(), a[x,y];
  readArray(a);
  print("Your matrix is:\n");
  printArray(a);
  print("The transpose of your matrix is:\n");
  printArray(transArray(a));
  print("You matrix multiplied with its transpose is:\n");
  printArray(mulArray(a,transArray(a)));
  print("The transpose of your matrix multiplied with your matrix is:\n");
  printArray(mulArray(transArray(a),a));
}

// Should output what it says.