
ayuda, con bucle do while,
Publicado por jorge (1 intervención) el 06/09/2013 10:00:28
agredeceria si me ayudan a corregir este programa en dev c++.
es programa debe encontrar una raiz de la ecuacion f(x)=xcos (x^2)-4 en el intervalo -8.5 a -8 con el metodo de biseccion modificado con un error de tolerancia de .001 en 50 calculos. ya funciona al parecer si encuentra la raiz, pero tengo problemas con bucle Do While, una vez que determin la raiz (la interseccion en x) este ultimo calculo con su solucion lo repite sin parar. dejo el codigo
no se si estoy usando correctamente bucle Do While, ya que no estoy familiarizado con ella. pero debo usarla para hacer este programa.
y si me pudieran ayudar para que los datos se impriman como si estuviesen en una tabla(aunque no exista tal tabla)
#include<iostream>
#include<math.h>
#include<stdlib.h>
using namespace std;
int main()
{
//declaracion de variables
float x=0,a=0,b=0,c=0,fa=0,fb=0,fc=0,error=0,n=0;
//lectura de variables
cout<<"ingrese el valor de a ";
cin>>a;
cout<<"ingrese el valor de c ";
cin>>c;
cout<<"ingrese el error de tolerancia ";
cin>>error;
cout<<"ingrese el numero de calculos ";
cin>>n;
system("cls");
cout<<"N............A ..........B..........C.........F(A).........F(B)............ F(c)........."<<endl;
//calculos
fa=(a*cos(a*a))-4;
fc=(c*cos(c*c))-4;
x=1;
do
{
if(x>n)
{
cout<<"no hay solucion"<<endl;
}
else
if(fa*fc<=0)
{
b=(a+c)/2;
fb=b*cos(b*b)-4;
cout<<x<<" "<<a<<" "<<b<<" "<<c<<" "<<fa<<" "<<fb<<" "<<fc<<endl;
if(abs(fb)<=error)
{
cout<<"La Raiz es "<<b<<endl;
}
else
{
if(fb*fc<0)
{
a=b;
fa=fb;
x=x+1;
}
else
{
c=b;
fc=fb;
x=x+1;
}
}
}
else
{
cout<<"no hay solucion"<<endl;
}
}while(x<=1);
return 0;
}
es programa debe encontrar una raiz de la ecuacion f(x)=xcos (x^2)-4 en el intervalo -8.5 a -8 con el metodo de biseccion modificado con un error de tolerancia de .001 en 50 calculos. ya funciona al parecer si encuentra la raiz, pero tengo problemas con bucle Do While, una vez que determin la raiz (la interseccion en x) este ultimo calculo con su solucion lo repite sin parar. dejo el codigo
no se si estoy usando correctamente bucle Do While, ya que no estoy familiarizado con ella. pero debo usarla para hacer este programa.
y si me pudieran ayudar para que los datos se impriman como si estuviesen en una tabla(aunque no exista tal tabla)
#include<iostream>
#include<math.h>
#include<stdlib.h>
using namespace std;
int main()
{
//declaracion de variables
float x=0,a=0,b=0,c=0,fa=0,fb=0,fc=0,error=0,n=0;
//lectura de variables
cout<<"ingrese el valor de a ";
cin>>a;
cout<<"ingrese el valor de c ";
cin>>c;
cout<<"ingrese el error de tolerancia ";
cin>>error;
cout<<"ingrese el numero de calculos ";
cin>>n;
system("cls");
cout<<"N............A ..........B..........C.........F(A).........F(B)............ F(c)........."<<endl;
//calculos
fa=(a*cos(a*a))-4;
fc=(c*cos(c*c))-4;
x=1;
do
{
if(x>n)
{
cout<<"no hay solucion"<<endl;
}
else
if(fa*fc<=0)
{
b=(a+c)/2;
fb=b*cos(b*b)-4;
cout<<x<<" "<<a<<" "<<b<<" "<<c<<" "<<fa<<" "<<fb<<" "<<fc<<endl;
if(abs(fb)<=error)
{
cout<<"La Raiz es "<<b<<endl;
}
else
{
if(fb*fc<0)
{
a=b;
fa=fb;
x=x+1;
}
else
{
c=b;
fc=fb;
x=x+1;
}
}
}
else
{
cout<<"no hay solucion"<<endl;
}
}while(x<=1);
return 0;
}
Valora esta pregunta


0