• أهلاً بك زائر في في بيتك الثاني!
    اذا كنت وفيا لمنتدى اللمة بصدق فهو بحاجة لمساهمتك إن مشاركتك ونشاطك يبعثان الحياة فيه ليستمر وينتشر. تفاعل وشاركنا بآرائك، مواضيعك، وإبداعاتك لإثراء المحتوى ونشر الفائدة و كسب الثواب قبل أن نفقد اللمة للأبد كما وقع لباقي المنتديات لاتكتفي بالتفرج.

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

  • كاتب الموضوع كاتب الموضوع joura
  • تاريخ النشر تاريخ النشر
الحالة
مغلق ولا يسمح بالمزيد من الردود.

joura

:: عضو مُشارك ::
السلام عليكم

من فضلكم اريد المساعدة في ترجمة هذه الوظيفة من 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;

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[j])>ref) {ref=fabs(a[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[k]; a[k]=a[colonne] ;a[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("\n\n * Un pivot nul ! => methode de Gauss pivot total non applicable\n\n");
}

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

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

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

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 :\n\n");
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
​
 
الحالة
مغلق ولا يسمح بالمزيد من الردود.
العودة
Top Bottom