2017-04-04 80 views
-2

你好,我必須在4個文件(我在Visual Studio中工作)下面拆分代碼。我真的不知道該怎麼做,所以我請你們幫忙。提前致謝。我需要在C中拆分高斯消除法的代碼

Header.h(我有)

#include <stdlib.h> 
#include <conio.h> 

的main.c

data.c

solve.c

#include "Header.h" 

void main(void) 
{ 
    int i,j,k,n; 
    float A[20][20],c,x[10],sum=0.0; 
    printf("\nEnter the order of matrix: "); 
    scanf("%d",&n); 
    printf("\nEnter the elements of augmented matrix row-wise:\n\n"); 
    for(i=1; i<=n; i++) 
    { 
     for(j=1; j<=(n+1); j++) 
     { 
      printf("A[%d][%d] : ", i,j); 
      scanf("%f",&A[i][j]); 
     } 
    } 
    for(j=1; j<=n; j++) 
    { 
     for(i=1; i<=n; i++) 
     { 
      if(i>j) 
      { 
       c=A[i][j]/A[j][j]; 
       for(k=1; k<=n+1; k++) 
       { 
        A[i][k]=A[i][k]-c*A[j][k]; 
       } 
      } 
     } 
    } 
    x[n]=A[n][n+1]/A[n][n]; 
    for(i=n-1; i>=1; i--) 
    { 
     sum=0; 
     for(j=i+1; j<=n; j++) 
     { 
      sum=sum+A[i][j]*x[j]; 
     } 
     x[i]=(A[i][n+1]-sum)/A[i][i]; 
    } 
    printf("\nThe solution is: \n"); 
    for(i=1; i<=n; i++) 
    { 
     printf("\nx%d=%f\t",i,x[i]); 
    } 
    _getch(); 
} 
+2

你到目前爲止嘗試過什麼? – xFlowDev

+0

我做Header.h它看起來像 的#include 的#include 我也知道,我需要包含在每個文件我做 的#include「Header.h」(我的意思是每除了Header.h) 我還認爲頭文件中缺少一些東西 – Matitiitit97

+0

'#include 'O_o您確定您使用'C'嗎? – George

回答

0

這將是一個開端。這裏的Solve函數包含解決部分。與其他函數類似地繼續寫,如MatrixInput,MatrixOutput

你可能應該閱讀C教科書中有關函數的部分。 聲明:這是未經測試的代碼,仍有改進空間。

#include <stdio.h>  

void Solve(int n, float A[20][20], float x[20]) 
{ 
    float sum = 0.0; 
    int i, j, k; 
    float c; 
    for (j = 1; j <= n; j++) 
    { 
    for (i = 1; i <= n; i++) 
    { 
     if (i > j) 
     { 
     c = A[i][j]/A[j][j]; 
     for (k = 1; k <= n + 1; k++) 
     { 
      A[i][k] = A[i][k] - c*A[j][k]; 
     } 
     } 
    } 
    } 
    x[n] = A[n][n + 1]/A[n][n]; 
    for (i = n - 1; i >= 1; i--) 
    { 
    sum = 0; 
    for (j = i + 1; j <= n; j++) 
    { 
     sum = sum + A[i][j] * x[j]; 
    } 
    x[i] = (A[i][n + 1] - sum)/A[i][i]; 
    } 
} 


int main() 
{ 
    int i, j, n; 
    float A[20][20],x[20]; 
    printf("\nEnter the order of matrix: "); 
    scanf("%d", &n); 
    printf("\nEnter the elements of augmented matrix row-wise:\n\n"); 

    for (i = 1; i <= n; i++) 
    { 
    for (j = 1; j <= (n + 1); j++) 
    { 
     printf("A[%d][%d] : ", i, j); 
     scanf("%f", &A[i][j]); 
    } 
    } 

    Solve(n, A, x); 

    printf("\nThe solution is: \n"); 
    for (i = 1; i <= n; i++) 
    { 
    printf("\nx%d=%f\t", i, x[i]); 
    } 
    _getch(); 
} 
+0

謝謝!我很高興你能幫助我。現在我知道接下來要做什麼。 – Matitiitit97

+1

@ Matitiitit97可以隨時上傳和/或接受答案。 –

0

我道歉,但我在Linux操作系統gcc編譯工作,所以我沒有VS,我不能使用的一些您庫(CONIO.H ...),但這些代碼片段應該給你一個總的想法。

header.h:

#include <stdio.h> 

void getData(float A[20][20], int n); 
void degauss(float A[20][20], float x[10], int n); 

main.c中:

#include "header.h" 

void main(void) 
{ 
     int i, n; 
     float A[20][20],c,x[10],sum=0.0; 
     printf("\nEnter the order of matrix: "); 
     scanf("%d",&n); 

     getData(A, n); 
     degauss(A, x, n); 

     printf("\nThe solution is: \n"); 
     for(i=1; i<=n; i++) 
     { 
       printf("\nx%d=%f\t",i,x[i]); 
     } 
     printf("\n"); 

//  getch_(); 
} 

data.c:

include "header.h" 

void getData(float A[20][20], int n) 
{ 
     int i, j; 
     printf("\nEnter the elements of augmented matrix row-wise:\n\n"); 
     for(i=1; i<=n; i++) 
     { 
       for(j=1; j<=(n+1); j++) 
       { 
         printf("A[%d][%d] : ", i,j); 
         scanf("%f",&A[i][j]); 
       } 
     } 
} 

solve.c:

#include "header.h" 

void degauss(float A[20][20], float x[10], int n) 
{ 
     float c, sum=0.0; 
     int i, j, k; 
     for(j=1; j<=n; j++) 
     { 
       for(i=1; i<=n; i++) 
       { 
         if(i>j) 
         { 
           c=A[i][j]/A[j][j]; 
           for(k=1; k<=n+1; k++) 
           { 
             A[i][k]=A[i][k]-c*A[j][k]; 
           } 
         } 
       } 
     } 
     x[n]=A[n][n+1]/A[n][n]; 
     for(i=n-1; i>=1; i--) 
     { 
       sum=0; 
       for(j=i+1; j<=n; j++) 
       { 
         sum=sum+A[i][j]*x[j]; 
       } 
       x[i]=(A[i][n+1]-sum)/A[i][i]; 
     } 
} 

這只是一個起點,例如,您可以爲每個源文件使用頭文件,並且您可以移動data.c源文件中標準輸入的矩陣順序的代碼部分。