Cargando

Que es lo tiene mal este código




Pulsa corazón para recibir avisos de nuevas Respuestas

  AUTOR PREGUNTA

Publicado 14 julio 2023 - 13:09

float f(float x);
int m;
float a,b,xi;
float Ep;
int i,j,k,lin;
float xi1,Ec;

void cap();
void sec();
void salida();

void main(void)
{
marco(;
cap();
sec();
gotoxy(50,23);
printf("Teclee <Enter> p/cont");
getch();
}

void cap()
{
gotoxy(30,6);
printf("METODO DE LA SECANTE");
gotoxy(10,7);
printf("DATOS:");
gotoxy(25,8);
printf("Teclee margen de Error: ");
scanf("%f",&Ep);
gotoxy(25,9);
printf("Teclee el numero de iteraciones: ");
scanf("%d",&m);
gotoxy(25,10);
printf("Valor izquierdo del intervalo a= ");
scanf("%f",&a);
gotoxy(25,11);
printf("Valor derecho del intervalo b= ");
scanf("%f",&b);
gotoxy(5,12);
printf("Iteracion");
gotoxy(15,12);
printf("intervalo");
gotoxy(35,12);
printf("f(a)");
gotoxy(45,12);
printf("f(b)");
gotoxy(55,12);
printf("Xi");
gotoxy(65,12);
printf("Error");
gotoxy(5,13);
printf("--------------------");
printf("--------------------");
printf("--------------------");
lin=14;
return;
}

void sec()
{
xi=a;
for (i=1;i<=m;i++)
{
xi1=b-(f(b)*((a-b)/(f(a)-f(b))));
Ec=fabs(xi1-xi);
if (Ec<Ep)
{
salida();
i=m;
continue;
}
if ((f(xi1)*f(b))>0)
{
salida();
b=xi1;
}

if ((f(xi1)*f(b))<0)
{
salida();
a=xi1;
}

}
gotoxy(10,lin);
printf("La raíz es=%0.4f Error=%0.4f",xi1,Ec);
return;
}

float f(float x)

{
return ((3*pow(x,2)-18*x+15)/5);
}

void salida()
{
gotoxy(8,lin);
printf("%d",i);
gotoxy(13,lin);
printf("(%0.4f, %0.4f)",a,b);
gotoxy(34,lin);
printf("%0.4f",f(a));
gotoxy(44,lin);
printf("%0.4f",f(b));
gotoxy(55,lin);
printf("%0.4f",xi1);
gotoxy(65,lin);
printf("%0.4f",Ec);
xi=xi1;
if(lin>21)
{
gotoxy(20,23);
printf("Pulse <ENTER> para ver mas resultados");
getch();
for(j=15; j<24; j++)
{
for(k=5; k<79; k++)
{
gotoxy(k,j);
printf(" ");
}
}
lin=13;
}
lin=lin+1;
return;
}


  • ¿Tienes la misma pregunta? Yo también
  • Volver arriba

 

Publicado 14 julio 2023 - 14:11

El primer error que veo es que la función marco(); es llamada en el método main(), pero no está definida en ninguna parte del código. Si la función marco(); no es necesaria, puedes simplemente eliminarla. Si es necesaria, necesitas definirla en tu código.

 

Además, pareces estar usando una serie de funciones como gotoxy, que no son estándares en C o C++. Probablemente son parte de una biblioteca específica (como conio.h en el caso de gotoxy). Necesitas asegurarte de que estás incluyendo las bibliotecas correctas para estas funciones.

En último lugar, aunque no es un error de compilación, la función main() en C o C++ debería devolver un valor entero (int). Tienes void main(void), que no es estándar. Deberías cambiar esto a int main(void) y añadir return 0; al final de la función principal.

 

Con esos cambios, tu código debe compilar y funcionar correctamente, asumiendo que las bibliotecas que necesitas para gotoxy y otras funciones similares están disponibles y se incluyen correctamente. Si sigues teniendo problemas, por favor proporciona más detalles y estaré encantado de ayudarte más.




X