2013-11-28 3 views
-1

비슷한 크기의 항등 행렬로 행렬을 보완하려고합니다. 왜이 코드가 작동하지 않습니까?이 코드는 무엇이 문제입니까?

그것은 내가 잘못 J를 초기화하는 생각 정방 행렬 들어

for (i = 0; i < matrix.size(); i++) 
    for (j = matrix.size(); j < 2 * matrix.size(); j++) 
     if (i == j % matrix.size()) 
      matrix[i][j] = 1; 
     else 
      matrix[i][j] = 0; 
+0

'매트릭스'의 유형은 무엇입니까? –

+0

행렬의 정의를 제공하십시오. – gregory561

+0

또는 행렬의 정의를 연구하십시오. 뭔가 찾을 수 있습니다. – keyser

답변

2

'범위를 벗어 벡터 첨자'오류를주고 유지?

for (i = 0; i < matrix.size(); i++) 
    for (j = 0; j < matrix.size(); j++) 
     if (i == j) 
      matrix[i][j] = 1; 
     else 
      matrix[i][j] = 0; 

편집 : 그래서 처음 엔이 (가) 행 (http://en.wikipedia.org/wiki/Augmented_matrix) 당신은 (어쩌면 또는 행 배열) 각 행 벡터의 크기를 조정해야

for (i = 0; i < matrix.size(); i++) 
    matrix[i].resize(2 * matrix.size()) 
    for (j = matrix.size(); j < 2 * matrix.size(); j++) 
     if (i == j % matrix.size()) 
      matrix[i][j] = 1; 
     else 
      matrix[i][j] = 0; 
+0

고맙습니다. 1, 1 2 내가 어떻게 만들었 을까? 1 1 1 0, 1 2 0 1 – user3045590

+0

행렬을 늘리면 좋다. http://en.wikipedia.org/wiki/Augmented_matrix ok - 코드가 비슷해 보인다. 메모리 할당에 관해서는 확실하지만 모든 행이 확장을 허용하기 위해 더 길어야합니까? – DavidC

1

의 길이를 연장하려면 다음을 생각 증대하는 . 그렇지 않으면 액세스하려는 셀이 행 범위를 벗어나고 해당 오류가 발생합니다.

matrix[row].resize(2*matrix[row].size());으로 수행 할 수 있습니다. 여기에서 row = 0 .. matrix.size()-1입니다.

관련 문제