#include <stdlib.h>
#include <stdio.h>
#include <math.h>
double Raices(double xi, double xd, double errtolerado, int maxiter, int *ban, double (*metodo)(double xder, double xizq, double (*func)(double y)), double (*f)(double a, double (*curva)(double x)))
{
double xa, xv, erraprox;
if(f(xi,sin)*f(xd,sin)>=0)
{
*ban=0;
return 0;
}
for(int n=1; n<=maxiter; n++)
{
xa=metodo(xi, xd, f);
if(f(xi,sin)*f(xa,sin)<0)
xd=xa;
else
{
if(f(xi,sin)*f(xa,sin)>0)
xi=xa;
else
{
*ban=2;
return xa;
}
}
if(n>1)
erraprox=fabs((xa-xv)/(xa));
xv=xa;
if(erraprox<=errtolerado)
{
*ban=2;
return xa;
}
}
*ban=1;
return xa;
}
double Bisec(double xi, double xd, double (*f)(double x))
{
double xa;
xa=(xi+xd)/2;
return xa;
}
double FalPos(double xi, double xd, double (*f)(double x))
{
double xa;
xa= xd-((f(xd)*(xi-xd))/(f(xi)-f(xd)));
return xa;
}
double MiFunc(double a, double (*f)(double x))
{
double y;
y=a*f(a);
return y;
}
int main()
{
double xi, xd, errtol, xap;
int maxiter, ban, op;
system("cls");
printf("Este programa buscara las raices de x*sen(x), introduzca el intervalo\n en la forma de xi,xd: ");
scanf("%f,%f", &xi, &xd);
printf("\n\nIntroduzca el error maximo tolerado, valores del 0 al 100: ");
scanf("%f", &errtol);
printf("\n\nIntroduzca el numero maximo de iteraciones: ");
scanf("%i", &maxiter);
printf("\n\nElija el método, 1 para Bissecion, 2 para Falsa Posicion, otro numero acabara el programa: ");
scanf("%i", op);
switch(op)
{
case 1:
xap=Raices(xi,xd,errtol,maxiter,&ban,Bisec,MiFunc);
break;
case 2:
xap=Raices(xi, xd, errtol, maxiter, &ban, FalPos, MiFunc);
break;
default:
printf("\n\nFin de Programa\n\n");
system("pause");
break;
}
switch(ban)
{
case 0:
printf("\n\nNo Existe la raiz en el intervalo\n\n");
system("pause");
break;
case 1:
printf("\n\nLa raiz existe, pero el error no es aceptable, pruebe otro metodo:\nRaiz: %f\n\n", xap);
system("pause");
break;
case 2:
printf("\n\nLa raiz aproximada es: %f", xap);
system("pause");
break;
}
}
The issue is when I try to call the functions from main, I can't find how to make the compiler happy. Any help is welcome.

New Topic/Question
Reply




MultiQuote




|