Name: Anonymous 2013-02-10 22:15
I don't know what the fuck is wrong with this shit, it stays looped in the iterations and doesn't print any results
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int main ()
{
// declaracion de variables
float pa, pb, pc, fa, fb, fc, error;
int n, itera, exito, fallo;
// captura de datos necsarios del metodo
system ("cls");
printf("datos necesarios para el calculo de la raiz de una\n");
printf("ecuacion utilizando el metodo de biseccion para la\n");
printf("ecuacion x^3+2x^2-10 \n");
printf("--------------------------------------------------\n");
printf("intervalo punto A................\n");
scanf("%f", &pa);
printf("intervalo punto C................\n");
scanf("%f", &pc);
printf("precicion de calculo:............\n");
scanf("%f", &error);
printf("limite de iteraciones de calculo.: ");
scanf("%f", &n);
// encabezado de datos
system("cls");
printf(" INSTITUTO TECNOLOGICO DE CULIACAN\n");
printf(" ingenieria mecanica \n\n");
printf("metodos numericos:\n");
printf(" No. A B C FA FB FC\n");
printf("------------------------------------------------------------\n");
//calcula la funcion de cada punto del segmento
fa=(pa*pa*pa)+(2*pa)-10;
fc=(pa*pa*pa)+(2*pa)-10;
fallo=0;
exito=0;
itera=1;
do
{
//calcula el punto intermedio del segmento y su funcion
pb= (pa+pc)/2;
fb=(pb*pb*pb)+(2*pb)-10;
//impresion de datos
printf("%i %10.6f 10.6f 10.6f 10.6f 10.6f 10.6f \n", itera, pa, pb, pc, fa, fb, fc);
// preguntar si ya se encontro la raiz
if (abs(fb)<=error)
{
//se encontro la raiz }
exito=1;
}
else
{
// pregunta si en el calculo no hubo cambios de signo
// debido a que si no hay cambio de signo en el calculo
// de raices no tiene solucion
if ( ( (pa>0) && (fa>0) ) || ( (pa<0) && (fa<0) ) &&
( (pb>0) && (fb>0) ) || ( (pb<0) && (fb<0) ) &&
( (pc>0) && (fc>0) ) || ( (pc<0) && (fc<0) ) )
{
// no hubo cambio de signo
fallo=1;
}
else
{
// debe existir un cambio de signo en alguna de las variables
if ( ( (pa<0) && (fa>0) ) || ( (pa>0) && (fa<0) ) ||
( (pb<0) && (fb>0) ) || ( (pb>0) && (fb<0) ) )
{
//se dio un cambio de signo en el segmento A-B
pc=pb;
fc=fb;
itera=itera+1;
}
else
{
// entonces se dio un cambio de signo en el segmento B-C}
pa=pb;
fa=fb;
itera= itera+1;
};
};
};
if ( itera > n) fallo=1;
} while ( (exito==0) && (fallo==0) );
printf("-------------------------------------------------------\n");
printf("\n\n\n\n");
//pregunta cual fue la fotma en la que salio del bucle repetitivo
if (fabs(fb)<error)
{
//se encontro la raiz }
printf("la raiz de la ecuacion= %10.6f \n\n\n", pb);
};
if (itera>=n)
{
//no se encontro la raiz. se cumplio el numero maximo de iteraciones}
printf("No se encontro la raiz en %i calculos...\n\n\n", n);
};
if (fallo==1)
{
//no hubo cambio de signo
printf("El proceso se detubo por que no existe cambio de signo por\n");
printf("lo tanto esta ecuacion no tiene raiz en este segmento.\n");
printf("cambie los valores de los puntos iniciales y proceda de nuevo...\n\n\n\n");
};
system("PAUSE");
return EXIT_SUCCESS;
}
Please tell me if there is anything wrong in my code
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int main ()
{
// declaracion de variables
float pa, pb, pc, fa, fb, fc, error;
int n, itera, exito, fallo;
// captura de datos necsarios del metodo
system ("cls");
printf("datos necesarios para el calculo de la raiz de una\n");
printf("ecuacion utilizando el metodo de biseccion para la\n");
printf("ecuacion x^3+2x^2-10 \n");
printf("--------------------------------------------------\n");
printf("intervalo punto A................\n");
scanf("%f", &pa);
printf("intervalo punto C................\n");
scanf("%f", &pc);
printf("precicion de calculo:............\n");
scanf("%f", &error);
printf("limite de iteraciones de calculo.: ");
scanf("%f", &n);
// encabezado de datos
system("cls");
printf(" INSTITUTO TECNOLOGICO DE CULIACAN\n");
printf(" ingenieria mecanica \n\n");
printf("metodos numericos:\n");
printf(" No. A B C FA FB FC\n");
printf("------------------------------------------------------------\n");
//calcula la funcion de cada punto del segmento
fa=(pa*pa*pa)+(2*pa)-10;
fc=(pa*pa*pa)+(2*pa)-10;
fallo=0;
exito=0;
itera=1;
do
{
//calcula el punto intermedio del segmento y su funcion
pb= (pa+pc)/2;
fb=(pb*pb*pb)+(2*pb)-10;
//impresion de datos
printf("%i %10.6f 10.6f 10.6f 10.6f 10.6f 10.6f \n", itera, pa, pb, pc, fa, fb, fc);
// preguntar si ya se encontro la raiz
if (abs(fb)<=error)
{
//se encontro la raiz }
exito=1;
}
else
{
// pregunta si en el calculo no hubo cambios de signo
// debido a que si no hay cambio de signo en el calculo
// de raices no tiene solucion
if ( ( (pa>0) && (fa>0) ) || ( (pa<0) && (fa<0) ) &&
( (pb>0) && (fb>0) ) || ( (pb<0) && (fb<0) ) &&
( (pc>0) && (fc>0) ) || ( (pc<0) && (fc<0) ) )
{
// no hubo cambio de signo
fallo=1;
}
else
{
// debe existir un cambio de signo en alguna de las variables
if ( ( (pa<0) && (fa>0) ) || ( (pa>0) && (fa<0) ) ||
( (pb<0) && (fb>0) ) || ( (pb>0) && (fb<0) ) )
{
//se dio un cambio de signo en el segmento A-B
pc=pb;
fc=fb;
itera=itera+1;
}
else
{
// entonces se dio un cambio de signo en el segmento B-C}
pa=pb;
fa=fb;
itera= itera+1;
};
};
};
if ( itera > n) fallo=1;
} while ( (exito==0) && (fallo==0) );
printf("-------------------------------------------------------\n");
printf("\n\n\n\n");
//pregunta cual fue la fotma en la que salio del bucle repetitivo
if (fabs(fb)<error)
{
//se encontro la raiz }
printf("la raiz de la ecuacion= %10.6f \n\n\n", pb);
};
if (itera>=n)
{
//no se encontro la raiz. se cumplio el numero maximo de iteraciones}
printf("No se encontro la raiz en %i calculos...\n\n\n", n);
};
if (fallo==1)
{
//no hubo cambio de signo
printf("El proceso se detubo por que no existe cambio de signo por\n");
printf("lo tanto esta ecuacion no tiene raiz en este segmento.\n");
printf("cambie los valores de los puntos iniciales y proceda de nuevo...\n\n\n\n");
};
system("PAUSE");
return EXIT_SUCCESS;
}
Please tell me if there is anything wrong in my code