تخطى إلى المحتوى

طلب مساعدة في البرمجة 2024.

السلام عليكم

من فضلكم اريد المساعدة في ترجمة هذه الوظيفة من C الي PASCAL و شكرا مسبقا

svp aidez moi a écrire en pascal cette procédure parce que je connu pas le langage c

void gauss_pivot_total(float a[19][19],float b[19],int n)

{
float x[19],p,s,ref,temp;int i,j,k,ligne,colonne,pivot_sol[19],temps;

// vecteur de pivotation des solutions
for(i=0;i<n;i++) pivot_sol[i]=i;

for(k=0;k<n-1;k++)
{
// max pour le pivot total
ref=0;
for(i=k;i<n;i++) for (j=k;j<n;j++)
if(fabs(a[i][j])>ref) {ref=fabs(a[i][j]);ligne=i;colonne=j;}

// pivotations
for(j=k;j<n;j++) {temp=a[k][j]; a[k][j]=a[ligne][j] ;a[ligne][j]=temp;}

temp=b[k]; b[k]=b[ligne]; b[ligne]=temp;

for(i=0;i<n;i++) {temp=a[i][k]; a[i][k]=a[i][colonne] ;a[i][colonne]=temp;}
// remplissage du vecteur accordé aux pivotations
temps=pivot_sol[k];
pivot_sol[k]=pivot_sol[colonne];
pivot_sol[colonne]=temps;

if (a[k][k]==0)
{
printf("nn * Un pivot nul ! => methode de Gauss pivot total non applicablenn");
}

//réduction
for(i=k+1;i<n;i++)
{
p=a[i][k]/a[k][k];
for (j=k;j<n;j++) a[i][j]=a[i][j]-p*a[k][j];
b[i]=b[i]-p*b[k];
}
}

// Résolution
for(i=n-1;i>=0;i–)
{
s=0;
for(j=i+1;j<n;j++)s=s+a[i][j]*b[j];
b[i]=(b[i]-s)/a[i][i];
}

// pivotation des solutions
for(i=0;i<n;i++) x[pivot_sol[i]]=b[i];

zero(a,b,n);
printf("n——— Gauss avec pivot total ———n");
printf("n * La matrice reduite :");
aff_syst(a,b,n);
printf("n * La resolution donne :nn");
for (i=0;i<n;i++) printf(" X_%d = %f ;n",i+1,x[i]);
printf("n");

}
// Mettre à Zero les elements qui doivent etre des zéro

void zero(float a[19][19],float b[19],int n)
{
int i,j;float eps=1e-4;
for(i=0;i<n;i++)
{
for (j=0;j<n;j++) if (fabs(a[i][j])<eps) a[i][j]=0;
if (fabs(b[i])<eps) b[i]=0;
}
}

void comatrices(float a[19][19],float c[19][19],int i,int j,int n)
{
int l,k;
for(l=0;l<n;l++) for(k=0;k<n;k++)
{
if ((l<i)&&(k<j)) c[l][k]=a[l][k];
if ((l>i)&&(k<j)) c[l-1][k]=a[l][k];
if ((l<i)&&(k>j)) c[l][k-1]=a[l][k];
if ((l>i)&&(k>j)) c[l-1][k-1]=a[l][k];
}
}

merci d avance

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.