为了账号安全,请及时绑定邮箱和手机立即绑定

8.14.4:求和网格代码HS

8.14.4:求和网格代码HS

慕无忌1623718 2023-09-14 17:55:29
问题是这样的:(这是 JavaScript)写一个函数叫函数 sumGrid(grid) 以网格作为参数,并用该位置的行索引和列索引之和填充网格中的每个位置。例如,这段代码:var grid = new Grid(2, 3);println(sumGrid(grid));应该输出:0   1   21   2   3这是我到目前为止所得到的......function start(){   var grid = new Grid(2, 3);   println(sumGrid(grid));}function sumGrid(grid){   for(var row = 0; row < grid.numRows(); row++){      for(var col = 0; col < grid.numCols(); col++){        var elem = (row);        row += 1;        print(elem + " ");    }        println("");    col = 0    for(var row = 0; row < grid.numRows(); row++){        col += 1;        var elem2 = (col);        print(elem2 + " ");              }   }}当我运行代码时,它显示: 0   1   2 1   2  undefined 知道我应该做什么吗?
查看完整描述

4 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

您看到的原因undefined是因为您正在print调用该sumGrid函数,该函数不会返回任何内容,因此undefined会打印出“为什么”。


不知道为什么你有 3 个for循环,但你只需要 2 个。首先循环rows,然后循环cols,然后简单打印row + col应该可以工作。


const Grid = function (x, y) {

  this.x = x

  this.y = y

  

  this.numRows = () => {

    return this.x

  }

  

  this.numCols = () => {

    return this.y

  }    

}


const sumGrid = (grid) => {

   for(let row = 0; row < grid.numRows(); row++){

      document.write("<p> ")

      for(let col = 0; col < grid.numCols(); col++){        

        document.write(row + col)

      }

      document.write(" </p>")

    }

}


const grid = new Grid(4, 5)

sumGrid(grid)


查看完整回答
反对 回复 2023-09-14
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

我相信在我查阅了Grid 文档并使用源代码进行练习后,这应该可以工作。我也在REPL上有它

function start(){

  var grid = new Grid(2, 3);

  println(sumGrid(grid));

}

function sumGrid(grid){

  grid.grid.forEach(a=>a.fill(1)) //if some strange error happens, change this line to: grid.forEach(a=>a.fill(1))

  var ans=[]

  var x=grid.toList()

  x.forEach(a=>ans.push(a[0]+a[1]))

  return ans

}

start()


查看完整回答
反对 回复 2023-09-14
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

这对我来说有点小问题,但我得到了这个更简单的答案。


    function start(){

        var grid = new Grid(2,3);

        println(sumGrid(grid));

    }


    function sumGrid(grid){

        for(var row = 0; row < grid.numRows(); row++){

            for(var col = 0; col < grid.numCols(); col++){

                var elem = col + row;

                grid.set(row, col, elem);

            }

        }

        return grid;

    }


查看完整回答
反对 回复 2023-09-14
?
MM们

TA贡献1886条经验 获得超2个赞

我让它工作了!这就是我为获得正确输出所做的事情:


function start(){

    var grid = new Grid(2, 3);

    println(sumGrid(grid));


}

function sumGrid(grid){

    for(var row = 0; row < grid.numRows(); row++){

        for(var col = 0; col < grid.numCols(); col++){

            var elem = (row);

            row += 1;

            print(elem + " ");

        

    }

    println("");

    col = 0

    for(var row = 0; row < grid.numRows(); row++){

        col += 1;

        var elem2 = (col);

        print(elem2 + " ");

        elem2 += 1

    }

    return elem2

   }

}

这可能不是解决问题的最佳方法,但它可以完成工作。


查看完整回答
反对 回复 2023-09-14
  • 4 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信