数组下标的无效类型'double [int]'

时间:2015-09-18 19:00:26

标签: c++ subscription

这是我在c ++中的代码,我收到标题中显示的错误

#include <iostream>
#include <complex>

using namespace std;

double distance(double a,double b,double c ,double d)
{
double distance=0;
distance=sqrt(pow((b-a),2)+pow((d-c),2));
return abs(distance);
 }


int main()
{
int t,n;
int arr[4]={0};
double a[30001][2];
double b[30001][2];
double c[30001][2];
double d[30001][2];
cin>>t;
while(t--)
{
    cin>>n;
    // insert the values of x and y in arrays 
    for (int i = 0; i < n; ++i)
    {
        double a,b;
        cin>>a>>b;
        if(a>0 && b>0)
        {
            ++arr[1];
            a[arr[1]][0] = a;
            a[arr[1]][1] = b;
        }
        else if(a>0 && b<0)
        {
            ++arr[2];
            b[arr[2]][0]=a;
            b[arr[2]][1]=b;
        }
        else if(a<0 && b<0)
        {
            ++arr[3];
            c[arr[3]][0]=a;
            c[arr[3]][1]=b;
        }
        else
        {
            ++arr[4];
            d[arr[4]][0]=a;
            d[arr[4]][1]=b;
        }
    }

    // if 0 coordinates of one type are present then print 0 and exit
    if(arr[1]==0 || arr[2]==0 || arr[3]==0 || arr[4]==0)
        cout<<0<<endl;
    else
    {
        int count = 0 ;
        for(int i=1;i<=arr[1];++i)
        {
            for(int j=1;j<arr[2];++j)
            {
                for (int x = 1; x < arr[3]; ++x)
                {
                    for (int y = 1; y < arr[4]; ++y)
                    {
                        int dis1=distance(arr[i][0],arr[j][0],arr[i][1],arr[j][1]);
                        int dis2=distance(arr[j][0],arr[x][0],arr[j][1],arr[x][1]);
                        int dis3=distance(arr[x][0],arr[y][0],arr[x][1],arr[y][1]);
                        int dis4=distance(arr[y][0],arr[i][0],arr[y][1],arr[i][1]);
                        double s = dis1+dis2+dis3+dis4/2;
                        double area = sqrt(s(s-dis1)(s-dis2)(s-dis3)(s-dis4));
                        if(area%(double)1==(double)0)
                        {
                            ++count;
                        }
                    }
                }
            }
        }
        cout<<count<<endl;
    }
}
return 0;
} 

好像我在这个简单的代码中遗漏了一些东西

任何人都可以帮助我做这件事

另外,我需要描述我错在哪里..

1 个答案:

答案 0 :(得分:2)

该行

double a,b;

隐藏行

中数组的定义
double a[30001][2];
double b[30001][2];

重命名一组这些变量。 E.g。

double oneA, oneB;