错误:无法将参数'1'的'double *'转换为'double'并且错误:对于数组下标,无效类型'double [double]'

时间:2017-11-02 04:53:53

标签: c++ arrays

我正在尝试引入部分数据文件来填充数组,并且用户有三次尝试输入正确的数据文件名。我一再得到这些错误。我知道像arr这样的数组只是指向内存块的指针。

#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;

void extract (double arr ,int n, double& i, int& error);

int main () {
    double arr[256];
    int n=256;
    double i=0;
    int error=0;
    extract (arr,n,i,error);
    return 0;
    }

void extract (double arr, int n, double& i,int& error){
    string infile;
    string data="data.txt";cout <<"enter data file name/n";
    cin >> infile;
    while ((error<3) && (data.compare(infile) != 0)){
            error++;
            cout << "error in input. Please try again/n";
            cin >> infile;
            }
    if (error<3){
            ifstream fin;
            fin.open("data.txt");
            while ((i<n) && (fin >> arr[i])){
                    i++;
                    cout << arr[i] << "   ";
                    }
            fin.close();}
    }

错误发生在while循环中,该循环将数据从数据文件输入到数组中。 将Double i更改为int i用

替换旧问题
error: invalid types ‘double[int]’ for array subscript

这是我的数据文件 84 87 78 16 94 36 87 93 50 22 63 28 91 60 64 27 41 27 73 37 12 69 68 三十 83 31 63 24 68 36 三十 3 23 59 70 68 94 57 12 43 三十 74 22 20 85 38 99 25 16 71 14 27 92 81 57 74 63 71 97 82 6 26 85 28 37 6 47 三十 14 58 25 96 83 46 15 68 35 65 44 51 88 9 77 79 89 85 4 52 55 100 33 61 77 69 40 13 27 87 95 40

1 个答案:

答案 0 :(得分:1)

void extract (double arr ,int n, double& i, int& error);函数的定义和声明中将void extract (double* arr ,int n, double& i, int& error);更改为extract

编辑:另一个错误是因为double类型变量被用作数组索引,在i函数的extract中,所以要么改变{{1}的类型在提取函数的最开始使用i或使用int,我更喜欢第一种方式。

以下是代码的link以及所做的更改,它可以完美地编译和运行。

希望这有帮助