Добавление значений 2 столбцов из матрицы и сложение суммы в вектор

#c #arrays #vector

Вопрос:

Мой первый вопрос о CPP в Stackoverflow. Надеюсь, я получу ответ.

 #include <fstream>
using namespace std;

ifstream fin("Matr.dat");
ofstream fout("out.dat");

int a[1000][1000];
int b[10000];
int n, m;
void read()
{
    fin>>n>>m;
    for(int i=1; i<n; i  )
    {
        for(int j=1; j<m; j  )
            fin>>a[i][j];
    }
}
int vect()
{
    int c=1;
    for(int i=2; i<=n; i  )
    {
        for(int j=2; j<=m; j  )
        {
            b[c]=a[j] a[j 1];
            c  ;
        }
    }
    return c;
}

int main()
{

    read();
    int c=vect();
    for(int i=0; i<c; i  )
        fout<<b[i]<<' ';
    return 0;
}
 

Я и мой коллега пытаемся добавить значения 2 столбцов в вектор.
Для строки `b[c]=a[j] a[j 1]; я получаю сообщение об ошибке, в котором говорится, что я использую 2 несовместимых типа вместе. Это не работает…

Может кто-нибудь, пожалуйста, помочь мне добавить значения 2 столбцов в вектор?

Комментарии:

1. Будьте осторожны с именами, которые вы выбираете, чтобы объяснить свою проблему. Это не матрицы и векторы. Это массив и массив массива. К сожалению, они никак не соотносятся с этими математическими понятиями. Хорошая математическая библиотека, предлагающая эти типы векторов и матриц, может вам очень помочь.

2. Как ты думаешь a[j] , что это такое? Пожалуйста, помните, как a это декларируется. Не должно ли это быть a[i][j] вместо этого (или a[j][i] , в зависимости от того, что вы хотите подвести итог)?

3. Также обратите внимание, что в C индексы массивов начинаются с нуля.

4. for(int i=1; i<n; i ) выглядит странно. i=1 означает, что в нем ничего не будет храниться a[0][X] . Может быть, это именно то, чего ты хочешь, но мне это кажется случайной ошибкой.

5. Аналогично в for(int i=2; i<=n; i ) , i<=n , позволит i равняться n , и это может быть вызвано одной ошибкой в другом направлении.