Hola buenas, estaba haciendo un programa algo estupido y al final me estoy volviendo loco, lo he dado mil vueltas e imagino que tiene que ser algun error estupido, o no, pero no soy capaz de encontrarle. Es un programa basico que te da una funcion por partes y te pide calcular el valor de f(x) en funcion de x, y el lio viene en el logaritmo neperiano, imagino que es por los limites que no me los reconoce, exarle un vistazo:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/*Ejercicio 5: Se define la funcion f(x) por partes, como:
Valor de f(x):
x2 - x3 si x < -1
e(x+1) si -1<= x < 2
ln(x) si 2 <= x <= 5
x2 - x si x > 5
Escribirunprograma que calcule f(x) a partir deun valor dado de x desde teclado.*/
int main(void) {
float num;
float resultado;
//Presentacion
printf("Funcion Por Partes\n");
printf("==================\n\n");
//Peticion de datos
printf("Introduce el valor de x: ");
scanf("%f", &num);
if(num < -1) {
resultado = pow(num,2) - pow(num,3);
printf("f(%g) = %g\n\n", num, resultado);
}
else if( -1 <= num < 2) {
resultado = exp(num + 1);
printf("f(%g) = %g\n\n", num, resultado);
}
else if( 2 <= num <= 5) {
resultado = log(num);
printf("f(%g) = %g\n\n", num, resultado);
}
else {
resultado = pow(num,2) - num;
printf("f(%g) = %g\n\n", num, resultado);
}
system("pause");
return 0;
}
Salu2 y gracias.
Creo que el fallo esta en las sentencias de control :P
Prueba a hacerlo con un switch no? Vamos en mates se 3 temas por delante del temario que llevamos en 1º ESO y lo que me enseña mi padre de 2º y demas xD... pero creo que es por eso...
Modf (no esta muy bien explicado xD): Digo que a lo mejor se mete en un bloque al cual no deberia de ir, dando un resultado inesperado...
Prueba a hacer las operaciones a cabeza, y copia el code y lo partes en diferentes programas, y vas metiendole los numeros hasta que te funcionen en todos y luego los vas agrupando de dos en dos y acabaras arreglandolo. O sencillamente switch... Suerte!