Dev - C++ - Alguien me puede ayudar con el algoritmo de este programa

   
Vista:

Alguien me puede ayudar con el algoritmo de este programa

Publicado por Oscar ivna-santillan@live.com.mx (1 intervención) el 21/04/2016 04:11:16
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#include <math.h>

int main ()
{
int i, j, k, n,l;
float **ecuaciones,Ex,producto,producto2,Eper;
char *literales,literal;
printf ("Ingrese el n\243mero de ecuaciones (n): ");
scanf ("%d",&n);
printf ("Ingrese el Error Permitido: ");
scanf ("%f",&Eper);
getchar();
ecuaciones = (float**) malloc (sizeof (float*) * n);
literales = (char*) malloc (sizeof (char) * (n+1));
double itera[n];
for (i=0; i<n; i++)
{
literales[i] = '\0';
printf ("Ingrese la literal de la variable %d: ",i+1);
do {
literal = tolower (getch ());
} while (!isalpha (literal) || strchr (literales, literal));
literales[i] = literal;
printf ("%c\n", literal);
}
for (i=0; i<n; i++)
{
ecuaciones[i] = (float*) malloc (sizeof (float) * (n+1));
for (j=0; j<n; j++)
{
printf ("Ingrese el coeficiente de la variable '%c' de la ecuaci\242n %d: ",literales[j],i+1);
scanf ("%f",&ecuaciones[i][j]);
}
printf ("Ingrese la constante de la ecuaci\242n %d: ",i+1);
scanf ("%f",&ecuaciones[i][n]);
}
for (i=0; i<n; i++)
{
producto=0;
if (ecuaciones[i][i]==0.0)
{
fprintf (stderr, "Error: divisi\242n entre cero.\n\n");
system ("pause");
return EXIT_FAILURE;
}
else if(i>0) //Encuentra el primer valor de las variables que contenga el sistema
{
for(k=0;k<i;k++)
{
producto+=itera[k]*ecuaciones[i][k];
}
}
itera[i]=(ecuaciones[i][n]-producto)/ecuaciones[i][i];
}
do
{
l++;
for(j=0;j<n;j++)
{
if(j==0) //La segunda iteración de X1
{
producto=0;
for(k=1;k<n;k++)
{
producto+=itera[k]*ecuaciones[j][k];
}
itera[j]=(ecuaciones[j][n]-producto)/ecuaciones[j][j];
}
else if(j>0) //Corresponde a las iteraciones de las variables X2...Xn
{
producto=0;
for(k=0;k<j;k++)
{
producto+=itera[k]*ecuaciones[j][k];
}
producto2=0;
if(j+1<n)
{
for(k=j+1;k<n;k++)
{
producto2+=itera[k]*ecuaciones[j][k];
}
}
itera[j]=(ecuaciones[j][n]-producto-producto2)/ecuaciones[j][j];
}
}
Ex=fabs(ecuaciones[0][1]/itera[0]);
}while(Ex<=Eper);
printf ("\nSoluci\242n:\n\n");
for (i=0; i<n; i++)
{
printf ("%c = %.10g\n", literales[i], itera[i]);
printf("%d",n);
getch();
}
putchar ('\n');
system ("pause");
return EXIT_SUCCESS;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder