Anuncio

Colapsar
No hay ningún anuncio todavía.

Error en programa sencillo.

Colapsar
X
 
  • Filtro
  • Hora
  • Mostrar
Borrar todo
nuevos mensajes

  • C/C++ Error en programa sencillo.

    Hola a todos,

    Estoy intentando aprender programación y leyendo un poco y viendo algunos ejemplos he podido hacer unos programas muy sencillos, me he seguido aventurando a hacer programas y hay uno que no me sale:

    Código:
    #include <stdio.h>
    #include <math.h>
    
    #define E 2.71828
    
    int main()
    {
        int exponente;
    
        printf("Introduzca un exponente entero:\n");
        scanf("%i", &exponente);
    
        double resultado=pow(E,exponente);
    
        printf("El número natural \"e\" elevado a dicho número es:\n %d \n",resultado);
    
    return 0;
    }
    Este programa lo he hecho simplemente para usar la función de elevar un número a otro. No me compila por dos problemas:

    1. Me dice que el formato "%d" espera un número entero (para el cual era "%i" que yo sepa), pero el argumento 2 es del tipo "double" (para el cuál justamente puse "%d").

    2. Me dice también que hay una referencia indefinida en 'pow', la función potencia. Y no entiendo por qué, he leído que esta función se usaba así y se llamaba así, y que estaba en el directivo <math.h>, el cual ya he agregado.
    ¿Es posible que no lo tenga incluido? ¿Cómo puedo ver las funciones que tengo en cada directivo?

    ¡Muchas gracias!

    P.D.: Por cierto, en una versión anterior a ésta intenté lo siguiente, que supongo que es lo mismo y me salía el mismo problema, pero sé que es un poco más compleja y quiero asegurarme que esté bien.

    Código:
    #include <stdio.h>
    #include <math.h>
    
    #define E 2.71828
    
    int main()
    {
        int exponente;
    
        printf("Introduzca un exponente entero:\n");
        scanf("%i", &exponente);
    
        printf("El número natural \"e\" elevado a dicho número es:\n %d \n",pow(E,exponente));
    
    return 0;
    }
    ¡Gracias nuevamente!
    [tex=English properties]\dst \begin{aligned}\frac 1 n \sin x = ?\\ \frac{1}{\not{n}}si\not{n}x=?\\ six=6\end{aligned}[/tex]

  • #2
    Re: Error en programa sencillo.

    ¿Qué compilador estás usando? Yo estoy usando el BloodShed Dev-C++ 4.9.9.2. Lo que es el proceso de compilación lo hace, salvo que tuve que introducir system("pause"); para que me dejara ver el resultado sin cerrar la ventana. Otra cosa que tuve que modificar es el tipo de dato de salida que usa el printf, cambiando %d por %lf (me daba resultados absurdos) ya que el resultado lo has definido como double. Así, el programa me queda:

    Código:
    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    
    #define E 2.71828
    
    int main()
    {
        int exponente;
    
        printf("Introduzca un exponente entero:\n");
        scanf("%i", &exponente);
    
        double resultado=pow(E,exponente);
    
        printf("El número natural \"e\" elevado a dicho número es:\n %lf \n",resultado);
        
    system("pause"); 
    return 0;
    
    }
    donde he incluido la librería stdlib.h porque el system("pause"); lo requiere.

    Saludos.

    Comentario


    • #3
      Re: Error en programa sencillo.

      Añade -lm al gcc, es decir gcc -lm archivo
      "No one expects to learn swimming without getting wet"
      \displaystyle E_o \leq \frac{\langle \psi | H | \psi \rangle}{\langle \psi | \psi \rangle}

      Comentario


      • #4
        Re: Error en programa sencillo.

        ¡Muchas gracias a ambos!

        He intentado compilarlo con gcc -lm (¿Cuál es el significado de "-lm"?) y parece que ya me reconocía la función "pow" pero aún estaba el problema de la definición de la variable. He sustituido "%d" por "%lf". ¿A qué hace referencia %d entonces? El compilador me ponía que a un entero, pero la definición de entero es "%i".

        ¡Muchas gracias nuevamente!
        Última edición por GNzcuber; 11/07/2010, 17:03:23. Motivo: Error de tipeo.
        [tex=English properties]\dst \begin{aligned}\frac 1 n \sin x = ?\\ \frac{1}{\not{n}}si\not{n}x=?\\ six=6\end{aligned}[/tex]

        Comentario


        • #5
          Re: Error en programa sencillo.

          Escrito por GNzcuber Ver mensaje
          He intentado compilarlo con gcc -lm (¿Cuál es el significado de "-lm"?)
          http://www.nondot.org/sabre/Mirrored...l_8.html#SEC40

          ¿A qué hace referencia %d entonces?
          http://www.cplusplus.com/reference/c...cstdio/printf/
          "No one expects to learn swimming without getting wet"
          \displaystyle E_o \leq \frac{\langle \psi | H | \psi \rangle}{\langle \psi | \psi \rangle}

          Comentario

          Contenido relacionado

          Colapsar

          Trabajando...
          X