Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Halp

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

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List