Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Умножение матриц


Автор: Larrr 7.11.2009, 23:03
Уважаемые, практикуюсь на простом умножении матриц. Код не компилируется и выдает ошибки, которые я пока что ввиду некоторого недостатка опыта решить не в состоянии. Поэтому прошу помощи зала smile.

Код


#include <stdio.h>

int** mmult(int** m1, int **m2, int n, int m, int k) {
  int **result = new int[n][k];
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < k; j++) {
      result[i][j] = 0;
      for (int u = 0; u < m; u++) {
        result[i][j] += m1[i][u]*m2[u][j];
      }
    }
  }
  return result;
}

int main() {
  int** m1 = new int[][] {{1,2}, {3,4}};
  int** m2 = new int[][] {{5,6}, {7,8}};

  int** res = mmult(m1, m2, 2,2,2);
  // тут матрица выводится в консоль
}



Ошибки:

1) 4: error: ‘k’ cannot appear in a constant-expression . Откуда взялась константа??
2) 17: error: expected primary-expression before ‘]’ token
    17: error: expected primary-expression before ‘]’ token
    17: error: expected ‘,’ or ‘;’ before ‘{’ token
    тут я подозреваю просто неправильно определен двумерный массив. Как правильно?

Заранее спасибо за советы! smile


Автор: ller 8.11.2009, 00:44
Код

int **result = new int[n][k];
 
Это не правильно.
Надо так
Код

*result = new *int[n];

for(int i=0;i<k;i++)
   result[i] = new int[k];

Автор: zim22 8.11.2009, 11:21
Цитата(ller @  7.11.2009,  23:44 Найти цитируемый пост)
Это не правильно.
Надо так
*result = new *int[n];

Это не правильно.
Надо так
Код

int **result = new int*[n];


Автор: ller 8.11.2009, 12:20
zim22, спасибо за поправку.
Код

double **matrix;

matrix=new double*[my];

for(i=0;i<my;i++)
    matrix[i] = new double[mx];


а у меня так работает.

Писал пост так по памяти. А я давно не програмировал.. Сечас только вспоминаю, вот и ошибся

Автор: Larrr 8.11.2009, 23:49
Работает! Спасибо!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)