Problema Programa C

Iniciado por Lolo_Molo, 9 Enero 2011, 17:52 PM

0 Miembros y 1 Visitante están viendo este tema.

Lolo_Molo

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.

Garfield07

#1
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!


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo