• Lunes 18 de Noviembre de 2024, 00:30

Autor Tema:  Funciones  (Leído 1305 veces)

javipedja

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Funciones
« en: Martes 4 de Mayo de 2004, 15:15 »
0
hola estoy haciendo un programa k t ecalcula la raiz dandole un intervalo, con bucles y alo e conseguido y ahora la tengo k hacer cn funciones.os pongo el de bucles:
 #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("%lf",&x1);
 printf("Introducir segundo punto del intervalo \n");
 scanf("%lf",&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)) )  {

       cont=0;
    do {

        x3= ((x1+x2)/2);
        y3= sin(x3);

        if (((y3>0) && (y1<0)) || ((y3<0) && (y1>0)) ) {
          x2=x3;}
        else
          x1=x3;
        if(y3<0)
          y3=-y3;
      cont++;
       }
    while(y3>=um);
      printf("\n La raiz es x=%1.20lf\n",x3);
      printf("\n El numero de iteraciones es= %d\n",cont);

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


 return;

 }
este funciona ahora el k he echo cn funciones(tengo k hacerlo cn recursividad):

#include<stdio.h>
#include<math.h>

double calcula_funcion(double);
double biseccion(double,double);
double um;
void main()
{
double x1,x2,um,raiz;
int u;

printf("Introducir menor punto del intervalo: ");
 scanf("%lf",&x1);
printf("Introducir segundo punto del intervalo: ");
 scanf("%lf",&x2);

if((x1==x2)||(x1>x2)){
    printf("\n ERROR:intervalo erroneo \n");
  return;
  }

 printf("\n Introduzca Exponente Umbral\n");
 scanf("%d",&u);

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

 um=pow10(-u);
 printf("\n El Umbral es: %1.0E\n",um);  */
 raiz=biseccion(x1,x2);
 if(raiz==0){
 printf("error");

 }
 else
 printf("la raiz es:%1.20lf",raiz);


 }

double calcula_funcion(double a)
{
double devolver;
devolver=sin(a);
return(devolver);
}

double biseccion(double x1,double x2)
{
double y1,y2,x3,y3,resultado;

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


if ( y1*y2>0 ){
 return (x1);
 }
 if( y1*y2<0 ) {
  x3=((x1+x2)/2);
  y3=calcula_funcion(x3);
  }
  if (((y3>0) && (y1<0)) || ((y3<0) && (y1>0)) ) {
          x2=x3;
          }
        else
          x1=x3;
        if(y3<0){
          y3=-y3;
          }
  if(y3<um){
  biseccion(x1,x2);
  }
  else
  return(x3);
 }
no consigo k la variable umbral este tambien en la funcion de biseccion.como lo hago??????k esta mal???????una ayudita please.

javipedja

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Funciones
« Respuesta #1 en: Jueves 6 de Mayo de 2004, 21:15 »
0
ya lo he solucionado
gracias