Autor Tema: problema con funciones matemáticas básicas en C  (Leído 4001 veces)

rackdon

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 50
    • Ver Perfil
problema con funciones matemáticas básicas en C
« en: 12 de Mayo 2014, 13:16 »
Buenos dias.
Con el siguiente código intento crear una función que me pida un número y con ese número hacer las operaciones, pero no se puede porque me da error al compilar. Estoy empezando con las funciones y creo que no las he entendido del todo bien ya que sino creo que funcionaria. ¿me podríais echar una mano a ver donde está el error?

Muchisimas gracias

Código: [Seleccionar]
// Funciones matemáticas //

#include <stdio.h>
#include <math.h>

double numero (double x); //prototipo de funcion//

main()
{
      // raiz cuadrada //
      printf("***Raiz cuadrada***\n\n");
      numero;
      printf ("La raiz cuadrada del n%cmero introducido es: %.2lf \n\n", 163, sqrt(numero) );
     
      // funcion exponencial //
      printf("***funcion exponencial***\n\n");
      numero;
      printf("La funci%cn exponencial del n%cmero introducido es: %.2lf \n\n", 162, 163, exp (numero) );
     
      // logaritmo base e //
      printf("***Logaritmo base e***\n\n");
      numero;
      printf("El logaritmo base e del n%cmero introducido es: %.2lf \n\n", 163, log (numero) );
     
      // logaritmo base 10 //
      printf("***Logaritmo base 10***\n\n");
      numero;
      printf("El logaritmo base 10 del n%cmero introducido es : %.2lf \n\n", 163, log10 (numero) );
     
      // valor absoluto //
      printf("***Valor absoluto***\n\n");
      numero;
      printf("El valor absoluto del n%cmero introducido es: %.2lf \n\n", 163, fabs (numero) );
     
      // Redondear al entero más pequeño //
      printf("***Redondeo al entero m%cs peque%co no menor que el n%cmero introducido***\n\n", 160, 164, 163);
      numero;
      printf("El entero m%cs peque%co del n%cmero introducido, no menor que %cste es: %.0lf \n\n", 160, 164, 163, 130, ceil (numero));
     
      // Redondear al entero más grande //
      printf("***Redondeo al entero m%cs grande no mayor que el n%cmero introducido***\n\n", 160, 163);
      numero;
      printf("El entero m%cs grande del n%cmero introducido, no mayor que %cste es: %.0lf \n\n", 160, 163, 130, floor (numero));
     
      // X elevado a la potencia y //
      printf("x (n%cmero 1) elevado a la potencia y (n%cmero 2)\n\n", 163, 163);
      double x =0;
      numero;
      x = numero;
      numero;
      printf("El n%cmero 1 elevado a la potencia n%cmero 2 es: %.2lf \n\n", 163, 163, pow( x, numero) );
     
      // Residuo de x/y como un número de punto flotante //
      printf("***Residuo de num1/num2 como un n%cmero de punto flotante***\n\n", 163);
      numero;
      x = numero;
      numero;
      printf("El residuo de num1/num2 como un n%cmero de punto flotante es: %.2lf \n\n", 163, fmod (x, numero));
     
      // Seno trigonometrico //
      printf("***Seno trigonom%ctrico***\n\n", 130);
      numero;
      printf("El seno trigonom%ctrico del n%cmero introducido es: %.2lf \n\n", 130, 163, sin(numero) );
     
      // Coseno trigonometrico //
      printf("***Coseno trigonom%ctrico***\n\n", 130);
      numero;
      printf("El coseno trigonom%ctrico del n%cmero introducido es: %.2lf \n\n", 130, 163, cos(numero) );
     
      //Tangente trigonométrica //
      printf("***Tangente trigonom%ctrica***\n\n", 130);
      numero;
      printf("La tangente trigonom%ctrica del n%cmero introducido es: %.2lf \n\n", 130, 163, tan(numero) );
     
     
     


system ("pause");
return 0;
}

double numero (double x)
{
       printf("Por favor introduzca un n%cmero: ",163);
       scanf("%lf", &x);
       return x;
}
« Última modificación: 12 de Mayo 2014, 14:41 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:problema con funciones matemáticas básicas en C
« Respuesta #1 en: 12 de Mayo 2014, 14:50 »
Viendo el código no entiendo bien qué es lo que quieres hacer, o como dices si no estás entendiendo bien el concepto de función.

double numero (double x) significa que esta función te devuelve un double y te pide un double para poder ser ejecutada.

Para invocar esta función necesitarías llamarla con por ejemplo numero(3.63) donde 3.63 es el número que le pasas a la función.

Tú escribes numero; pero esto no es una llamada válida a la función.

Si entiendo lo que quieres hacer podrías escribir:

double pedirNumeroyDevolverlo ()
{
       printf("Por favor introduzca un n%cmero: ",163);
       scanf("%lf", &x);
       return x;
}

El () indica que no hay que pasarle ningún dato a la función. double indica que la función devolverá un tipo double.

El valor que te devuelve la función tendrías que almacenarlo o invocarlo directamente. Si lo almacenas podría ser en una variable auxiliar como:

numeroObtenido = pedirNumeroyDevolverlo();

Y luego...

printf("El seno trigonom%ctrico del n%cmero introducido es: %.2lf \n\n", 130, 163, sin(numeroObtenido) );

La otra alternativa sería invocarlo directamente (aunque esto es más lioso y no te aseguro que vaya a funcionar):

printf("El seno trigonom%ctrico del n%cmero introducido es: %.2lf \n\n", 130, 163, sin(pedirNumeroyDevolverlo()) );

Saludos.

rackdon

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 50
    • Ver Perfil
Re:problema con funciones matemáticas básicas en C
« Respuesta #2 en: 12 de Mayo 2014, 23:17 »
Muchisimas gracias.

Ya he entendido entonces como funciona, tenía la idea pero me faltaban algunos detalles.
Gracias por todo.
Un saludo

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".