• Domingo 19 de Mayo de 2024, 07:30

Autor Tema:  Ayuda Con Bucle  (Leído 972 veces)

javipedja

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Ayuda Con Bucle
« en: Sábado 10 de Abril de 2004, 22:52 »
0
ola estoy haciendo un programilla k calcula raices por medio de biseccion.como funcion continua es seno.os pongo el codigo:
#include<stdio.h>
 #include<math.h>

 void main (){
 double x1,x2,y1,y2,um,x3,y3;
 int u,cont;

 printf("Introducir menor punto del intervalo \n");
 scanf("%f",&x1);
 printf("Introducir segundo punto del intervalo \n");
 scanf("%f",&x2);

 if((x1==x2)||(x1<x2)) {
    printf("\n ERROR:intervalo erroneo \n");
    return;
           }
 printf("\n Introduzca Exponente Umbral\n");
 scanf("%d",&u);

 y1=sin(x1);
 y2=sin(x2);

 if (u<=0) {
    printf("\n Error:Exponente erroneo \n");
    return;
           }

 um=pow10(-u);
 printf("\n El Umbral es: %1.0e\n",um);

 if(((y1<0)&&(y2)>0)||((y1>0)&&(y2<0)))  {


    do {
        cont=0;
        x3=(x1+x2)/2;
        y3=sin(x3);

        if(((y3>0)&&(y1<0))||((y3<0)&&(y1>0))) {
          x1=x3;}
        else
          x2=x3;

      cont++;
       }
    while(y3<=um);
      printf("\n La raiz es x=%1.8lf\n",x3);

     }
 else
   printf("\n Error:Intervalo erroneo \n");


 return;

 }



como observais utilizo en el bucle un do-while,yo prefiero  hacerlo por for pero no me salia.k veis mal en el bucle?????????????????xk al compilar no me da error y cuando lo ejecuto llega bien hasta el bucle donde se keda pillado.

Gracias por adelantado

patitofeo

  • Miembro MUY activo
  • ***
  • Mensajes: 145
    • Ver Perfil
Re: Ayuda Con Bucle
« Respuesta #1 en: Lunes 19 de Abril de 2004, 18:06 »
0
NO HAGAN CASO.  ME EQUIVOQUE


Bueno, no se si me equivoco, no me he detenido mucho, pero me creo que el problema es que la condición para romper el bucle depende solo de y3, que a su vez es función de x3 ¿cierto?

Sin embargo, el valor de x3 no cambia en ningún momento dentro del bucle, por lo que si en un principio la condición de while es cierta, lo seguirá siendo siempre.

Es algo así como poner

do{


...


}while(TRUE);

que es un ciclo infinito. Se ejuta siempre.


Creo que esto es porque en las asignaciones:

Código: Text
  1.  
  2. if(((y3&#62;0)&&(y1&#60;0))||((y3&#60;0)&&(y1&#62;0))) {
  3. x1=x3;}
  4. else
  5. x2=x3;
  6.  
  7.  


lo has puesto alreves

¿querias decir?

Código: Text
  1.  
  2. if(((y3&#62;0)&&(y1&#60;0))||((y3&#60;0)&&(y1&#62;0))) {
  3. x3=x1;}
  4. else
  5. x3=x2;
  6.  
  7.  


bueno. Ya me contaras si te he ayudado. Saludos

 :blink:

patitofeo

  • Miembro MUY activo
  • ***
  • Mensajes: 145
    • Ver Perfil
Re: Ayuda Con Bucle
« Respuesta #2 en: Lunes 19 de Abril de 2004, 18:11 »
0
Lo siento, he metido la pata.


Es evidente que X3 si que cambia.


Código: Text
  1.  
  2. x3=(x1+x2)/2;
  3. y3=sin(x3);
  4.  
  5.  


Todo por no prestar suficiente atención.

Soy un cazurro, espero me disculpes.

 :D
 :blink:

 :kicking:

The Black Boy

  • Miembro de PLATA
  • *****
  • Mensajes: 1043
  • Nacionalidad: co
    • Ver Perfil
    • http://www.mslatam.com/latam/technet/mva2/Microsite.aspx?alias=JairoDiaz
Re: Ayuda Con Bucle
« Respuesta #3 en: Lunes 19 de Abril de 2004, 18:54 »
0
bueno....  ;)   primero para que la variable  cont  tu la incrementas; pero se incrementa y se  incrementa ¿pero cuando  debe parar eso? osea en que momento debes dejar de incrementar esa variable  mejor para que ?

Segundo...... :think:   el bucle se ejecuta mientras y3<=um; pero um no esta en el ciclo; asi por encima veo eso..

Revisa tu logica, por que en efecto errores de sintaxis no hay

Un saludo y espero haberte ayudado :hola:
El inteligente no es aquel que lo sabe todo
sino aquel que   sabe utilizar lo poco que sabe.


Espacio Personal

si necesitas algo de programacion click aqui, si no esta aqui no existe

Programacion]