2012-12-20 3 views
-4

전 다차원 배열에 두 가지 문제를 제기하기 전에 저에게 많은 도움을 주신 분께 감사드립니다. 하나는 아래에 보여처럼 지금 내 코드에서 여전히 고정되어 있지 버그가있다 : 이제아직 다차원 배열과 싸우고 있습니다

#include "Algorithm.h" 

template<int size> 
void strassen_matrix_multiplication(int (*A)[size], int (*B)[size], int (*C)[size]){ 
    int n = size/2; 

    int A11[n][n]; 
    int P1[n][n]; 
    int S1[n][n]; 
    strassen_matrix_multiplication(S1, A11, P1); 
} 

내가 5했다 컴파일 오류 INT 라인을 가지고 :

일치 호출이 'strassen_matrix_multiplication'

을 기능을

어떻게 해결할 수 있습니까? 난 sevaral 시간 코드를 수정했지만 헛된. 어떤 도움을 주셔서 감사합니다. 코드와 매우 몇 가지 문제, 당신은 내가이 무한한를 해결하기 위해 몇 가지 템플릿 전문을 만든 1 또는 0

size는 기본 케이스를 잡을하지 않았기 때문에 그들 중 하나는 무한 재귀되는이 있었다

+3

코드가 잘못되어 컴파일되지 않습니다. 문제를 올바르게 보여주는 실제 코드 샘플을 제공 할 수 있습니까? –

+0

@ TonyTheLion : 여기에 모든 코드가 있습니다 –

+0

하지만 함수에 매개 변수를 전달하고 사용하지 마십시오 ??? –

답변

2

재귀.

두 번째 배열을 전달하면 2D 배열 int[N][N]이 포인터 int*[]의 배열로 변환 될 수 없기 때문에 2D 배열을 전달해야합니다.

다음은 코드이며 compiles은 사용하지 않은 매개 변수에 대한 경고 만 표시합니다.

#include<iostream> 

// Header file 

#include <fstream> 
#include <ostream> 
#include <string> 

template<int size> struct strassen 
{ 
static void strassen_matrix_multiplication(int A[size][size], int B[size][size], int C[size][size]){ 
    const int n = size/2; //make this a compile time constant 

    int A11[n][n] = {}; 
    int P1[n][n] = {}; 
    int S1[n][n] = {}; 
    strassen<n>::strassen_matrix_multiplication(S1, A11, P1); 
} 
}; 

template<> struct strassen<1> { 
static void strassen_matrix_multiplication(int A[1][1], int B[1][1], int C[1][1]){} 
}; 

template<> struct strassen<0> { 
static void strassen_matrix_multiplication(){} 
}; 

int main() 
{ 
    int arr[3][3]; 
    strassen<3>::strassen_matrix_multiplication(arr, arr, arr); 
} 
+0

도움을 주셔서 감사합니다.이 샘플에서 많은 것을 배웠습니다. 매일 행운을 빌어. –

관련 문제