Viernes 8 de Noviembre de 2024, 19:02
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
se vuelve infinito
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: se vuelve infinito (Leído 877 veces)
Grixis
Nuevo Miembro
Mensajes: 1
se vuelve infinito
«
en:
Domingo 18 de Julio de 2010, 18:40 »
0
este es solo un trozo de un codigo mas grande que estoy trabajando, lo demas funciona pero estas dos partes no funcionan bien, no dan los resultados y repiten el ciclo infinitamente, estoy usando dev-c++
Código: C++
# include <stdio.h>
# include <conio.h>
# include <windows.h>
# include <math.h>
# include <string.h>
main
(
void
)
{
int
opcion,j,i,fun
;
float
a,b,es,x,p,fp,fa,fb,p1,ea,x0,fp1,fx,fx0,xi1,mat
[
3
]
[
4
]
,a1,a2,a3,b1,b2,b3,ea1,ea2,ea3,pa
[
5
]
,ln0,ln2,ln3,ln1,ln4,co1,co2,co3,co4,co0
;
float
ex0,ex1,ex2,ex3,ex4,l1,l2,l3,l4,l0,l5,xi2,ln,Ln,LN,Cos,COS,Exp,EXP,va
[
10
]
,vv,suma,n,f0,func
[
10
]
,h,con,sum,I
;
system
(
"color 0a"
)
;
printf
(
"n°º¤ø,¸¸,ø¤º°`°º¤ø,¸MENU°º¤ø,¸¸,ø¤º°`°º¤ø,¸n"
)
;
printf
(
" n"
)
;
printf
(
"1.-Newton Raphsonn"
)
;
printf
(
"2.-Gauss Seideln"
)
;
printf
(
"Ingrese su Opcionn"
)
;
scanf
(
"%d"
,
&
opcion
)
;
switch
(
opcion
)
{
case
1
:
printf
(
"Ha seleccionado: Newton Raphsonn"
)
;
printf
(
"La Ecuacion a Evaluar sera: x^2*E^xn"
)
;
printf
(
"F'(x)=2x*E^xn"
)
;
printf
(
"Ingrese x0:n"
)
;
scanf
(
"%f"
,
&
x0
)
;
printf
(
"Ingrese la Tolerancia:n"
)
;
scanf
(
"%f"
,
&
es
)
;
do
{
printf
(
"n--------------------------------------n"
)
;
fx
=
pow
(
x0,
2
)
*
exp
(
x0
)
;
fx0
=
(
2
*
x0
)
*
exp
(
x0
)
;
if
(
fx0
!
=
0
)
{
printf
(
"el valor de F(x): %.4fn"
,fx
)
;
printf
(
"el valor de F'(x): %.4fn"
,fx0
)
;
xi1
=
x0
-
(
fx
/
fx0
)
;
printf
(
"el valor de xi+1: %.4fn"
,xi1
)
;
ea
=
fabs
(
(
xi1
-
x0
)
/
xi1
)
*
100
;
printf
(
"El valor relativo fue: %.4f %"
,ea
)
;
}
else
{
printf
(
"Ya que F'(x)=0, no se puede aplicar el metodon"
)
;
}
printf
(
"n--------------------------------------n"
)
;
x0
=
xi1
;
fx
=
pow
(
x0,
2
)
*
exp
(
x0
)
;
fx0
=
(
2
*
x0
)
*
exp
(
x0
)
;
if
(
fx0
!
=
0
)
{
printf
(
"el valor de F(x): %.4fn"
,fx
)
;
printf
(
"el valor de F'(x): %.4fn"
,fx0
)
;
xi2
=
x0
-
(
fx
/
fx0
)
;
printf
(
"el valor de xi+1: %.4fn"
,xi2
)
;
}
else
{
printf
(
"Ya que F'(x)=0, no se puede aplicar el metodon"
)
;
}
ea
=
fabs
(
(
xi2
-
x0
)
/
xi2
)
*
100
;
printf
(
"El valor relativo fue: %.4f %"
,ea
)
;
printf
(
"n--------------------------------------n"
)
;
}
while
(
ea
>
es
)
;
break
;
case
2
:
printf
(
"Ha seleccionado Gauss Seideln"
)
;
printf
(
"Ingrese la Matriz 3x4n"
)
;
for
(
i
=
1
;
i
<=
3
;
i
++
)
for
(
j
=
1
;
j
<=
4
;
j
++
)
{
printf
(
"Ingrese el elemento %d,%d de la matriz:"
, i,j
)
;
scanf
(
"%f"
,
&
mat
[
i
]
[
j
]
)
;
}
printf
(
"La matriz generada fue:n"
)
;
for
(
i
=
1
;
i
<=
3
;
i
++
)
{
for
(
j
=
1
;
j
<=
4
;
j
++
)
{
printf
(
"t%f"
,mat
[
i
]
[
j
]
)
;
}
printf
(
"n"
)
;
}
printf
(
"Ingrese la Tolerancia:n"
)
;
scanf
(
"%f"
,
&
es
)
;
do
{
printf
(
"n--------------------------------------n"
)
;
a1
=
mat
[
1
]
[
4
]
-
(
(
mat
[
1
]
[
2
]
+
mat
[
1
]
[
3
]
)
/
mat
[
1
]
[
1
]
)
;
a2
=
mat
[
2
]
[
4
]
-
(
(
mat
[
2
]
[
1
]
+
mat
[
2
]
[
3
]
)
/
mat
[
2
]
[
2
]
)
;
a3
=
mat
[
3
]
[
4
]
-
(
(
mat
[
3
]
[
1
]
+
mat
[
3
]
[
2
]
)
/
mat
[
3
]
[
3
]
)
;
printf
(
"el valor de X1 fue: %.4fn"
,a1
)
;
printf
(
"el valor de X2 fue: %.4fn"
,a2
)
;
printf
(
"el valor de X3 fue: %.4fn"
,a3
)
;
ea1
=
fabs
(
(
b1
-
a1
)
/
b1
)
*
100
;
ea2
=
fabs
(
(
b2
-
a2
)
/
b2
)
*
100
;
ea3
=
fabs
(
(
b3
-
a3
)
/
b3
)
*
100
;
printf
(
"Ea1=%.2fn"
,ea1
)
;
printf
(
"Ea2=%.2fn"
,ea2
)
;
printf
(
"Ea3=%.2fn"
,ea3
)
;
printf
(
"n--------------------------------------n"
)
;
b1
=
mat
[
1
]
[
4
]
-
(
(
(
mat
[
1
]
[
2
]
*
a2
)
+
(
mat
[
1
]
[
3
]
*
a3
)
)
/
mat
[
1
]
[
1
]
)
;
b2
=
mat
[
2
]
[
4
]
-
(
(
(
mat
[
2
]
[
1
]
*
b1
)
+
(
mat
[
2
]
[
3
]
*
a3
)
)
/
mat
[
2
]
[
2
]
)
;
b3
=
mat
[
3
]
[
4
]
-
(
(
(
mat
[
3
]
[
1
]
*
b1
)
+
(
mat
[
3
]
[
2
]
*
b2
)
)
/
mat
[
3
]
[
3
]
)
;
ea1
=
fabs
(
(
b1
-
a1
)
/
b1
)
*
100
;
ea2
=
fabs
(
(
b2
-
a2
)
/
b2
)
*
100
;
ea3
=
fabs
(
(
b3
-
a3
)
/
b3
)
*
100
;
printf
(
"el valor de X1 fue: %.4fn"
,b1
)
;
printf
(
"el valor de X2 fue: %.4fn"
,b2
)
;
printf
(
"el valor de X3 fue: %.4fn"
,b3
)
;
printf
(
"Ea1=%.2fn"
,ea1
)
;
printf
(
"Ea2=%.2fn"
,ea2
)
;
printf
(
"Ea3=%.2fn"
,ea3
)
;
}
while
(
(
ea1
>
es
)
and
(
ea2
>
es
)
and
(
ea3
>
es
)
)
;
break
;
getch
(
)
;
Tweet
czealt
Miembro activo
Mensajes: 28
Re: se vuelve infinito
«
Respuesta #1 en:
Lunes 19 de Julio de 2010, 01:11 »
0
Hola, bueno revise el codigo y vi un error en los indices que utilizas para manipular la matriz 'mat'.
Al declarar:
float mat[3][4];
el primer indice va de 0 a 2 y el segundo de 0 a 3. Por ejemplo el codigo para ingresar los valores de 'mat' deberia ser
Código: C
printf
(
"Ingrese la Matriz 3x4n"
)
;
for
(
i
=
0
;
i
<
3
;
i
++
)
for
(
j
=
0
;
j
<
4
;
j
++
)
{
printf
(
"Ingrese el elemento %d,%d de la matriz:"
,
i
+
1
,
j
+
1
)
;
scanf
(
"%f"
,&
mat
[
i
]
[
j
]
)
;
}
Saludos
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
se vuelve infinito