void reduced_echelon(double **X)
{

 interchange(X, 0, 1);

 replacement(X, 2, 0, 4);

 scaling(X, 1, 0.5);

 replacement(X, 2, 1, 3);

 replacement(X, 1, 2, 4);

 replacement(X, 0, 2, -1);

 replacement(X, 0, 1, 2);

}


이것만 고쳐서 row reduced echelon 만드는 건데 row reduction 알고리즘은 둘째치고


int main()
{
 FILE *fp;
 int i= 0 , j= 0;
 double input    = 0;
 double **X = NULL;

 // Set X
 X = (double**) malloc(sizeof(double)*M);
 for(i = 0; i < M; i++){
  X[i] = (double*) malloc(sizeof(double)*N);
 }
 i = 0;
 j = 0;

 fp = fopen("X.txt","r"); //Start of File Input (여기서 X는 메모장에 있는 임의의 행렬)
 while(!feof(fp)){
  fscanf(fp, "%lf", &input);
  X[i][j] = input;
  j++;
  if(j == N){
   j = 0;
   i++;
  }
 }
 fclose(fp); //End of File Input

 printf("** Given matrix : ** n" );
 for(i = 0; i < M; i++){
  for(j = 0; j<N; j++){
   printf("%.2lf  ",X[i][j]);
  }
  printf("n");
 }
 printf("n");

 // Start of Row Operation
 
 reduced_echelon(X);

 // End of Row Operation

 // Echelon Form
 printf("** Reduced echelon form : ** n" );
 for(i = 0; i < M; i++){
  for(j = 0; j<N; j++){
   printf("%.2lf  ",X[i][j]);
  }
  printf("n");
 }
 printf("n");

 for(i = 0; i < M; i++){
  free(X[i]);
 }
 free(X);

 return 0;
}


이게 메인 함수


걍 다 필요없고 쉽게 말해서 메인 함수는 X값을 불러와서 X가 어떤 행렬인지 출력하는거랑 X의 reduction결과를 출력하는 거임.


근데 void reduced_echelon에 double **X로 들어오잖아


여기서 X 행렬의 1,1 성분이 알고싶어서 reduced_echelon함수 안에서 printf(" : ", X[0][0]) 해서 출력해봤더니 X[0][0]값이 아무 것도 안나와 형.


어떻게 해야 X행렬 1,1 성분을 함수 안에서 사용할까?



예를 들어 if(X[0][0]>X[1][0]) 이렇게 이용한다는 의미야..