提问者:小点点

这个代码验证公式是什么意思?


 while(cin>>seats){
        
        if(seats>=0 &&seats<36){
            const int row=(seats-1)/7;   // <-
            const int col=(seats-1)%7;   // <-
            arr[row][col]=0;
            std::cout<<"\n Seat successfully reserved!\n";

<-标记的行中关于常量的代码让我感到困惑。 它是如何更新座位的,为什么除以7和模7的公式。 如果代码不够清晰,我可以提供整个代码。 是关于我的家庭作业座位预定计划的。


共1个答案

匿名用户

假设您有100个座位,分10排,每排10个座位; 席位,行和列从0开始编号,如下所示:

Seat  0 is in row 0, column 0.
Seat  1 is in row 0, column 1.
...
Seat  9 is in row 0, column 9.
Seat 10 is in row 1, column 0.
Seat 11 is in row 1, column 1.
Seat 12 is in row 1, column 2.
...
Seat 99 is in row 9, column 9.

明白了吗? 嗯,

  • 行索引始终是座位索引,除以10;
  • 列索引是减去前面行中全部座位后的剩余值,即列索引是座位索引的模10.

在您的情况下,您有不同数量的座位,行和列,但原理是相同的。

话虽如此。。。 如果你有36个座位,你确定行和列的长度不应该是6吗? 如果应该,则应该有/6%6,而不是/7%7。 另外,正如@MikeCat所指出的,如果座位是以0为基础的,就不应该有1的减法。