2012-04-03 2 views
0

상단 삼각 행렬을 할당하는 함수를 작성하려고합니다. 할당 된 배열의 첫 번째 요소에 대한 포인터를 반환해야합니다. 필요한 메모리의 정확한 양을 할당하기 위해 동적 할당을 사용해야하지만 어떻게해야하는지 잘 모르겠습니다 ... 팁이나 조언을 크게 높이세요! 나는 C++에 대한 멍청한 행동이다 .. 어쨌든 도움이된다면 여기에 내 코드가있다!상단 삼각 행렬을 할당하는 함수 작성

#include <iostream> 

using namespace std; 

int main() 
{ 
int a[3][3],i,j; //creating two dimensional array 
int d; 
int * p; 
cout<<"Please Enter the 9 elements of matrix (with spaces): "; 
for(i=0;i<3;i++) 
    for(j=0;j<3;j++) 
     cin>>d,&a[i][j]; 

cout<<"\nThe matrix is\n "; 
for(i=0;i<3;i++) 
{ 
    cout<<"\n"; 
    for(j=0;j<3;j++) 
     cout<<d,a[i][j]; 
} 

cout<<"\nSetting zero in upper triangular matrix\n"; 
for(i=0;i<3;i++){ 
    cout<<"\n"; 
    for(j=0;j<3;j++) 
     if(j>=i) 
      cout<<d,a[i][j]; 
     else 
      cout<<0; 
} 


    return 0; 
} 
+2

'cin >> d, & a [i] [j]'와 같은 것들을 기대하고 있는지 잘 모르겠다. –

+0

프로그램은 컴파일하는 중이지만 마지막 요소 만 출력하고있다. 입력 된 배열의 0과 상위 행렬을 강조하는 0을 ... – CornucopiaBeebee

+0

당신이'cin >> d, & a [i] [j]'라고 생각하는 것을 설명 할 필요가 있다고 생각합니다. 그것은 당신이 생각하는 것을 확실하게하지 않습니다. –

답변

0

보통 크기의 상부 삼각 행렬을 할당 N 당신은 할당 할 때 N + N-1 ... + 1 (찾아 정수의 합) 요소, 그리고 당신은 가능성 (액세스 메커니즘을 생성하거나 필요한 당신이 요소 M (i, j)를 원할 때 (거의) 요소가 누락되었다는 사실에도 불구하고 행 i, 열 j에있는 요소를 얻을 수 있도록; 또는 행렬 조작 코드가 그것을 사용하는 곳에서 행렬을 사용할 때 수동으로 수행하십시오.

첫 번째 N 요소가 첫 번째 행이고 다음 N-1 요소가 두 번째 행의 오른쪽 N-1 요소 인 것처럼 1 차원 배열을 처리합니다.

이 질문은 숙제와 같이 냄새가 나기 때문에, 적절한 힌트에 관한 것 같습니다.

+0

"정상적으로"말하면 안됩니다. 주요 선형 대수 패키지는이 포장 된 표현과 낭비적인 정사각형 - 행렬 - 항목 중 절반 만 사용하는 삼각형 행렬을 지원합니다.이 삼각형 행렬은 종종 성능면에서 좋거나 우수 할 수 있습니다. – leftaroundabout

+0

작은 표현이 필요한 유일한 이유는 행렬이 큰 경우입니다. 그러나 동시에 질문은 "필요한 기억의 정확한 양"을 지정했습니다. 나는 그 의도를 얻는 것을 가르치는 것이라고 추론한다. – DRVic

1

oli 님의 의견에 따르면 당신이 찾고있는 것 같아요

cin >> d; a [i] [j] = d;

VS

CIN >> D, & A [I] [J] 내가 좋아하는 뭔가를 읽고 제안

.... http://www.cplusplus.com/doc/tutorial/basic_io/

동적 할당 읽어보세요 새로운 malloc에 ​​같은 코드를 통해 이루어집니다 첫 번째 문제 ... 프로그래머

http://www.cplusplus.com/doc/tutorial/dynamic/

당신의 상위 매트릭스를 저장하는 방법은 ... 그냥 평범한 2d 매트릭스를 사용하는 것이 좋을 것 같습니다. 대부분의 매트릭스 라이브러리에서 더 잘 작동 할 것입니다.

숙제에 행운을 빈다.