プログラムの開発は、次の問題の1つであるIPCメカニズムを使用して実行されます。方法-「チャネル」。正方行列の行列式の計算を、低次の行列式に展開して実装します。「マスター」プロセスはジョブ「ドリブン」プロセスを送信しますが、後者は決定要因の計算を実行してから、メインプロセスの結果を計算します。つまり、パイプ関数を使用する必要があります。私は動作中のプログラムを持っていますが、IPCメカニズムがありません。パイプの機能とその仕組みについてはわかりません。
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int determinant(int n, double mat[n][n])
{
int i,j,i_count,j_count, count=0;
double array[n-1][n-1], det=0;
if(n==1) return mat[0][0];
if(n==2) return (mat[0][0]*mat[1][1] - mat[0][1]*mat[1][0]);
for(count=0; count<n; count++)
{
i_count=0;
for(i=1; i<n; i++)
{
j_count=0;
for(j=0; j<n; j++)
{
if(j == count) continue;
array[i_count][j_count] = mat[i][j];
j_count++;
}
i_count++;
}
det += pow(-1, count) * mat[0][count] * determinant(n-1,array);
}
return det;
}
int main()
{
int i, j, dim;
printf("Enter n\n");
scanf("%d", &dim);
double matrix[dim][dim];
printf("Enter matrix:\n");
for(i = 0; i < dim; i++)
{
for(j = 0; j < dim; j++)
{
scanf("%lf \n", &matrix[i][j]);
}
}
double x = determinant(dim, matrix);
printf("Determinant = %g\n", x);
return 0;
}