首页 > 解决方案 > 为什么我在涉及二维数组的代码中收到此错误?

问题描述

我在这里使用二维数组,我不太习惯。但我不认为我在这里做错了什么。

#include <stdio.h>
#include <math.h>

int square(int x)
{
   return x*x;
}

int main()
{
   int t; //number of testcases
   scanf("%d", &t);

   while (t--)
   {
       int n, m, cnt=1;
       scanf("%d %d", &n, &m);
    
       printf("Case %d:\n", cnt);
       cnt++;
    
       int arr[n][2]; //the 2d array with the entire record of the positions of the houses in village
    
       for (int i=0; i<n; i++)
       {
          scanf("%d %d", &arr[i][0], &arr[i][1]);   
       }    
    
       for (int j=0; j<m; j++)
       {
          int h, x, y, total=0;
          scanf("%d %d %d", &h, &x, &y);
          arr[h-1][0]=x;
          arr[h-1][1]=y;
        
          for (int k=0; k<(n-1); k++)
          {
             total+=square((arr[k][0])-arr[k+1][0])); //get error "expected ';' before token )"
             total+=square((arr[k][1])-arr[k+1][1]));
          }
        
          total+=square((arr[n-1][0])-arr[0][0]));
          total+=square((arr[n-1][1])-arr[0][1]));  
        
          printf("%d\n", total);    
       }
   }

   return 0;
}

我想出了这个作为这个问题的解决方案,我将在下面简要描述

山姆在他的村子里分发报纸。该村有 n 栋房屋,编号从 1 到 n,它们可以用笛卡尔点 (x, y) 的形式进行识别。每天早上,Sam 开始从 1 号房屋分发文件,然后按照房屋编号的增加顺序转移到其他房屋。在他的旅程结束时,他回到了房子 1。

在他的旅程之间,他会跟踪这段距离的旅行费用。从一所房子到另一所房子的旅行成本是它们之间欧几里得距离的平方。更复杂的是,这些房子不断地从一个地方移动到另一个地方,改变位置。我们的工作是计算与房屋的最新位置相关的整个旅程的总成本。

现在我们将获得房屋数量 n 和查询数量 m。输入接下来将有 n 行,在每行中,我们将具有该门牌号的相应 x 和 y 坐标。接下来还有 m 行,每行都是一个查询,其中包含更改位置的房屋编号以及该特定房屋的新坐标。

对于每个查询,我们需要打印 Sam 然后绕村屋一圈所需的总成本。

(Dev C++)编译器在我实现 square() 函数的每一行都给我这个错误消息:

预期的 ';' 在 ')' 标记之前

标签: c

解决方案


它可能是缺少括号或额外的括号?需要最后一个括号吗?

total+=square((arr[k][0])-(arr[k+1][0]));

推荐阅读