Anuncios Google

Ayuda en programación C, con un bucle tonto

Estoy realizando un programita en c q realiza el metodo sttefensen y tengo una duda practicamente tonta, pero que a pesar de los tutoriales no entiendo como resolver.

este es el codigo:

 

-----------------------------------------------------------------------------------------------------------

 

/* Programa: Metodo Steffensen

Carlos Delgado 03-2012 */

 

#include <stdio.h>

#include <math.h>

 

int main ()

 

{

     /* Indica Variables */

     float a,b,c,d,e,g,xn,ea,iteracion;

 

      /* Indica cuerpo del proceso */

      printf("Programa de metodo steffensen\n");

 

      printf("ingrese la variable a:"); 

      scanf("%f",&a);

 

 

 

 

      /*Indica resultados*/

 

      iteracion = 0;

 

      /*formula steffensen*/

 

      b = (a*a*a)-8;

      c = a+b;

      d = (c*c*c)-8;

 

      xn = a - ((b*b)/(d+b));

 

 

      /*error aproximado*/

 

      e = ((xn-a)/xn)*100;

      g = (e*e);

 

      ea = sqrt(g);

 

      printf("El resultado de la formula steffensen es %f\n" ,xn);

      printf("El error aproximado  es %f\n" ,ea);

 

 

 

      if (ea <= 1)

    {

          printf("Perfecto, se ajusta y ya no se debe iterar\n");

          printf("El total de iterasiones fue %f\n" ,iteracion);

    }

 

     else

    {

 

         printf("error, se debe seguir iterando\n");

         iteracion = iteracion +1;

 

         xn = a;

    }

 

 

      getchar();

      getchar();

 

 

      return 0;

 

      }

 

 

--------------------------------------------------------------------

 

Yo quiero que en la parte del else, vuelva a realizar la parte que dice /*formula steffensen*/ pero con el nuevo valor, pero no se como colocar que vuelva a resolver la formula


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Primero, si necesitas agregar

Primero, si necesitas agregar información arriba está la opción Editar, no es necesario que agregues comentarios.

Bien, atendiendo a lo que dijiste en tu primer comentario, sería algo como...

--Aquí lees el valor inicial de a
 
do{   //el bucle mágico xD
  b=formula_para_obtener_b(a);
    c=formula_para_obtener_c(b);
      if(c>1){  
        a=b;  //le paso el valor de "b" a "a", para que lo use en la siguiente iteración
      }
}while(c>1)

Si quieres contar las iteraciones, inicializa una variable fuera del bucle y dentro del mismo pones variable++; y la muestras al final ;)

Mil gracias por tu ayuda, asi

Mil gracias por tu ayuda, asi me quedo el codigo:

/* Programa: Metodo Steffensen
Carlos Delgado 03-2012 */
 
#include <stdio.h>
#include <math.h>
 
int main ()
 
{
     /* Indica Variables */
     float a,b,c,d,e,g,ea,xn;
 
      /* Indica cuerpo del proceso */
      printf("Programa de metodo steffensen\n");
 
      printf("ingrese la variable a:"); 
      scanf("%f",&a);
 
 
      do{
                     /*steffensen*/
 
                     b = (a*a*a)-8;
                     c = a+b;
                     d = (c*c*c)-8;
 
                     xn = a - ((b*b)/(d+b));
 
                     /*error aproximado*/
 
                      e = ((xn-a)/xn)*100;
                      g = (e*e);
 
                      ea = sqrt(g);
 
                      if(ea>1){
                               a=xn;
                      }
         }while(ea>1);
 
         printf("El error aproximado  es %f\n" ,ea);
 
         getchar();
      getchar();
 
 
      return 0;
 
      } 

Gracias, voy a ver si esto me

Gracias, voy a ver si esto me ayuda y en un rato coloco el codigo resuelto

no se si tambien se necesita

no se si tambien se necesita un DO-WHILE

En palabras mas sencillas, yo

En palabras mas sencillas, yo quiero que el programa me lea un dato "a" que mediante una formula me va a dar un resultado "b", despues ese resultado "b" lo voy a introducier en otra formula que me va a dar un resultado "c".

 

Si c es menor o igual a 1 termina el programa, si no, vuelve desde el inicio, con la diferencia de que esta ves el resultado de "b" va a ser mi nuevo "a".

 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.