[RESUELTO]Problema con funcion exp en C, cn Borland 5.02´

Iniciado por SonaArtica, 26 Agosto 2012, 23:05 PM

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

SonaArtica

Bueno el tema es que tengo que hacer : (x/z)^2
Averiguando supe que la funcion exp(x) saca el exponente, lo probe y nada.
Luego probe con pow(d1,d2) que seria d1 elevado a d2 ej: pow(4,2)->16

:-X A la expresion se la asigne a la variable x y no funka ;(
#include <stdio.h>
#include <conio.h>

int main(){
float a,b,x,resultado;
   a=1;
   b=4;
   x=a/b;
   resultado=pow(x,2);
   printf ("El resultado de %f/%f al cuadrado es %f",a,b,resultado);
getch();
return 0;
}


Y me gustaria que quede algo asi:
#include <stdio.h>
#include <conio.h>

int main(){
float a,b,x,resultado;
   a=1;
   b=4;

   resultado=pow(a/b,2);
   printf ("El resultado de %f/%f al cuadrado es %f",a,b,resultado);
getch();
return 0;
}


Pero tampoco funka :(
Jaja la verdad cn esta simple tonteria no la puedo resolver jaja, Saludos ^^
<z

fabianjsm

Podrías hacerlo de este modo:

Código (cpp) [Seleccionar]
#include<stdio.h>

/* f(x,z) = (x/z)^2 */
float f(float x, float z)
{
return !z? 0: (x /=z, x*x);
}

int main()
{
printf("%f\n", f(20,4)); // salida: 25.00
printf("%f\n", f(24,2)); // salida: 144.00
return 0;
}

SonaArtica

No entendi nada del codigo que pusiste jeje.
return !z? 0: (x /=z, x*x); eso de "z?" que es?
float f(float x, float z) me parecio verlo pero no recuerdo que es tampoco :(
<z

durasno

Hola! esos dos codigo que pusiste andan bien, el problema puede ser que te falta agregar el header math.h ó tenes algun problema con Borland


Saludos
Ahorrate una pregunta, lee el man

-- KiLiaN --

Y no sería más fácil multiplicar por sí misma la variable y obtener así el cuadrado?


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int cuadrado;
  printf ("Escribe un numero: ");
  scanf ("%d", &cuadrado);
  printf ("El resultado de %d/%d es %d \n", cuadrado, cuadrado, cuadrado * cuadrado);

  system("PAUSE");
  return 0;
}
Entren al chat de elhacker.net
    
   

@kln13

fabianjsm

La probaste al menos? Es C básico!

Cita de: -- KiLiaN -- en 27 Agosto 2012, 01:16 AMY no sería más fácil multiplicar por sí misma la variable y obtener así el cuadrado?

Pienzo lo mismo, para que quieres math.h si solo tienes que dividir y multiplicar dos números!

Te lo explico por partes:

// Si el resultado es cero abortamos la división
if(z == 0) // pero lo escribo asi if(!z)
return 0;
x = x/z; // pero lo escribo así x /= 2
x = x*x; // pero lo escribo asi x *= x

quedaría así

if(!z)
return 0;
x /= z;
x *= x;
return x;


Ahora el operador ternario

    a = (condicion)? (resultado_si): (resultado_no);
   
Si la condicion es verdadera, se asigna resultado_si, si es falsa se asigna resultado_no. Los paréntesis no son necesarios. Pero en nuestro caso tenemos dos operaciones para la ultima sentencia, así que la separamos con la coma

// si z vale 0 retornamos cero, en otro caso realizamos las dos operaciones...
// la expresión con comas tendra el valor de la última

resultado = (z == 0)? (0): (x /= z, x * x );

   return resultado;
   
Sintetizando nos queda así

    return !z? 0: (x /=z, x*x);

SonaArtica

Cita de: durasno en 27 Agosto 2012, 00:50 AM
Hola! esos dos codigo que pusiste andan bien, el problema puede ser que te falta agregar el header math.h ó tenes algun problema con Borland


Saludos

:) Jaja Graciass era eso que se me pasaba, tenia que inbocar la libreria <math.h> porque la funcion pow o sqrt son funciones de esa libreria, Saludos  ;D
<z