ошибка C2059: синтаксическая ошибка: ']', я не могу понять, почему это происходит в C ++ - PullRequest
0 голосов
/ 29 апреля 2010
void display_totals();
int exam1[100][3];// array that can hold 100 numbers for 1st column
int exam2[100][3];// array that can hold 100 numbers for 2nd column
int exam3[100][3];// array that can hold 100 numbers for 3rd column 
int main()
{
    int go,go2,go3;
    go=read_file_in_array;
    go2= calculate_total(exam1[],exam2[],exam3[]);
    go3=display_totals;
    cout << go,go2,go3;
    return 0;
}
void display_totals()
{

    int grade_total;
    grade_total=calculate_total(exam1[],exam2[],exam3[]);
}   
int calculate_total(int exam1[],int exam2[],int exam3[])
{
    int calc_tot,above90=0, above80=0, above70=0, above60=0,i,j;
    calc_tot=read_file_in_array(exam[100][3]);
    exam1[][]=exam[100][3];
    exam2[][]=exam[100][3];
    exam3[][]=exam[100][3];
    for(i=0;i<100;i++);
        {
            if(exam1[i] <=90 && exam1[i] >=100)
                {
                    above90++;
                    cout << above90;
                }
        }
        return exam1[i],exam2[i],exam3[i];

}

int read_file_in_array(int exam[100][3])
{
  ifstream infile;  

  int num, i=0,j=0;
  infile.open("grades.txt");// file containing numbers in 3 columns
    if(infile.fail()) // checks to see if file opended
    {
        cout << "error" << endl;
    }
  while(!infile.eof()) // reads file to end of line
      {
          for(i=0;i<100;i++); // array numbers less than 100
          {
            for(j=0;j<3;j++); // while reading get 1st array or element
            infile >> exam[i][j];
            cout << exam[i][j] << endl;
          }
      }
  infile.close();
  return exam[i][j];
}

Ответы [ 2 ]

1 голос
/ 29 апреля 2010

Тип данных, который вы передаете в Calculate_total, неверен. C ++ видит это как указатель на int. Вы передаете в двухмерном массиве. Вы должны сделать так, чтобы тип ввода для вашей функции calc_total соответствовал типу вашего массива.

Кроме того, все эти лишние [] имеют недопустимый синтаксис. При передаче переменной, определенной как массив, передайте только имя переменной.

// Invalid function call
f(myArray[]);

// Valid function call
f(myArray);

Внутри самой функции, что вы пытаетесь сделать? Вы пытаетесь изменить элемент exam1, exam2 и exam3 до значения эксперта [100] [3]?

Вам также не хватает объявления массива int exam[100][3]. Я не вижу этого нигде в вашем коде.

И в возвращении Calculate_total ваш оператор возврата искажен. Вы можете вернуть только одно значение, в отличие от Python, в котором он возвращает кортеж, содержащий три элемента.

0 голосов
/ 29 апреля 2010

Я заметил следующие проблемы в вашем коде

  1. read_file_in_array требует скобок. идти = read_file_in_array; // Неверный вызов функции

  2. Передача массивов в качестве аргументов

  3. display_totals требует скобок

  4. Прототипы функций отсутствовали в начале

  5. display_totals ничего не вернет. Но вы присваиваете его переменной

  6. Я не понимаю, что делает эта функция calc_total.

Если это ваш оригинальный код, в этом коде много проблем. Я взял этот код как есть и скомпилировал с помощью компилятора Turbo C ++. Я получил около 24 ошибок.

Можете ли вы провести рефакторинг своего кода и скомпилировать его.

...