Mensaje
por luigi_1530 » Mié Jun 03, 2009 3:35 am
LES ANEXO EL PROGRAMA
DE ELIMINACION GAUSSIANA..
:d
PERO QUISIERA AÑADIRLE
UN MARCO..
NO SE SI ALGUIEN ME PUEDA
PASAR UNO..
#include<math.h>
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<malloc.h>
int n;
float **A;
void eliminacion()
{
int i,j,k,max;
float t;
for(i=0;i<n;i++)
{ max=i;
for(i=j+1;j<n;j++)
if(fabs (A[j]) > fabs(A[max]))
max = j;
for(k=0;k<n;k++)
{ t=A[k];
A[k]=A[max][k];
A[k]=t;
}
for(j=i+1;j<n;j++)
for(k=n;k>=i;k--)
A[j][k]= A[k]*A[j]/A;
}
}
void sustitucion()
{
int j,k;
float t,*x;
x=(float*)malloc(sizeof(float)*n);
for(j=0;j<n;j++)
x[j]=A[j][n+1];
for(j=n-1;j>=0;j--)
{ t=0.0;
for(k=j+1;k<n;k++)
t+=A[j][k]*x[k];
x[j]=(A[j][n]-t)/A[j][j];
}
printf("las variables son:\n");
for(j=0;j<n;j++)
printf("%c = %f\n",'A'+j,x[j]);
}
void ponme(){
for(int L='A',i=0;i<n;i++) printf("%c%13c", L++, ' ');
printf("\b\b\b\b\b\b| R\n");
for(i=0;i<n;i++){
for(int k=1, j=0;j<n+1;j++,k++){
printf("%.2f",A[j]);
gotoxy(13*k, wherey());
if(j+1==n) printf("\b\b| ");
}
printf("\n");
}
printf("\n");
}
void lectura()
{
int i, j, L='A';
do{
printf("Numero de variables que tendra el sistema:\t");
scanf("%d",&n);
if(n<=2 || n>=15)
cout<<"ERROR, ingrese un numero entre 2 y 15"<<"\n";
}while(n<=2 || n>=15);
for(i=0;i<n;i++) printf("%c%7c", L++, ' '); printf("\b\b| R\n");
A=(float **)malloc(sizeof(float)*n+1);
for(i=0;i<n+1;i++) A[i]=(float *)malloc(sizeof(float)*n+1);
for(i=0;i<n+1;i++) for(j=0;j<n+1;j++) A[i][j]=0;
for(i=0;i<n;i++)
{ //filas -> ecuaciones
for(int k=1,j=0;j<=n;j++, k++)
{ //columnas -> variables
scanf("%f",&A[i][j]);
gotoxy(wherex()+8*k, wherey()-1);
if(j+1==n) printf("\b\b| ");
}
printf("\n");
}
printf("\n\n");
}
void determinante()
{
float det=1;
for(int i=0;i<n;i++)
det*=A[i][i];
printf("Determinante = %.3f\n", det);
}
void main()
{
clrscr();
lectura();
ponme();
eliminacion();
ponme();
sustitucion();
determinante();
getch();
}