Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Lolo_Molo en 9 Enero 2011, 17:52 pm



Título: Problema Programa C
Publicado por: Lolo_Molo en 9 Enero 2011, 17:52 pm
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:

Código:
#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.


Título: Re: Problema Programa C
Publicado por: Garfield07 en 9 Enero 2011, 18:28 pm
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!