Código de C/Visual C - Resolución de matrices de nxn a través del método gaussiano

Versión 1
estrellaestrellaestrellaestrellaestrella(6)

Publicado el 11 de Diciembre del 2002gráfica de visualizaciones de la versión: Versión 1
38.667 visualizaciones desde el 11 de Diciembre del 2002
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/*Programa que resuelve matricez de nxn dimenciones a travez del metodo de 
eliminacion gaussiana, y sustitucion hacia atras, muestra el valor de las 
incognitas y el determinante de la matriz.
Hecho en turbo c++ 3.0 de borland.

Por Oliver Mar Ramirez.

*/
 
#include <math.h>
#include <malloc.h>
#include <conio.h>
#include <stdio.h>
 
float **A;
int N;
 
void eliminacion()
{
	int i, j, k, max;
	float t;
	for(i=0;i<N;i++){
		max=i;
		for(j=i+1;j<N;j++) if( fabs(A[j][i])> fabs(A[max][i]) ) max=j;
		for(k=0;k<N;k++)
		{
			t=A[i][k];
			A[i][k]=A[max][k];
			A[i][k]=t;
		}
		for(j=i+1;j<N;j++)
		for(k=N;k>=i;k--)
			A[j][k]-=A[i][k]*A[j][i]/A[i][i];
	}
}
 
 
 
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[i][j]);
			gotoxy(13*k, wherey());
			if(j+1==N) printf("\b\b| ");
		}
		printf("\n");
	}
	printf("\n");
}
 
void lectura()
{
	int i, j, L='A';
	printf("Cuantas Variables tendra el sistema?\t[ ]\b\b\b");
	scanf("%d",&N);
	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();
}



Comentarios sobre la versión: Versión 1 (6)

16 de Noviembre del 2004
estrellaestrellaestrellaestrellaestrella
Tu programa está bien chingón. Gracias!!
Nota: solo te falta declarar la variable i de tipo int en una función void "ponme".

Me sirvió mucho.
Responder
16 de Noviembre del 2004
estrellaestrellaestrellaestrellaestrella
esta interesante tu codigo si puedes mandame explicaciones del desarrollo.
Responder
19 de Julio del 2005
estrellaestrellaestrellaestrellaestrella
este programa esta bien, tiene un error en el primer FOR que te presento despues de los PRINTF.
for(int L='A',i=0;i<N;i++)
printf("%c%13c", L++, ' ');
printf("\b\b\b\b\b\b| R\n");
for(int i=0;i<N;i++){
for(int k=1, j=0;j<N+1;j++,k++){
printf("%.2f",A[i][j]);
Responder
kike
13 de Octubre del 2017
estrellaestrellaestrellaestrellaestrella
meco!! no es cierto
Responder
27 de Octubre del 2005
estrellaestrellaestrellaestrellaestrella
muy bueno envia mas de estos codigos por fa
Responder
23 de Noviembre del 2007
estrellaestrellaestrellaestrellaestrella
no me funciona para matrices de 8x8 y de hay en adelante
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s386