/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

¿Por qué me falla?

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
Aredhel



Registrado: 09 Nov 2007
Mensajes: 8

MensajePublicado: 11/11/2007 3:49 am
Título: ¿Por qué me falla?

Tengo un problema con este programilla y por más que lo miro no encuentro que pasa!! Seguro q es una cosa mu tonta, pero bueno a ver si alguien me echa una manilla:)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main (void)
{
float a, b, hipotenusa;
printf("Introduce el primer cateto: ");
scanf("%f", &a);
printf("Introduce el segundo cateto: ");
scanf("%f", &b);
hipotenusa=sqrt( a^2+b^2 );
printf("La hipotenusa es %f\n", sqrt (a^2 + b^2);

system("pause");
return EXIT_SUCCESS;
}

UN SALUDO.
Volver arriba
Filzix



Registrado: 30 Oct 2007
Mensajes: 8

MensajePublicado: 11/11/2007 4:00 am
Título:

no se si ese tipo e exponente al cuadrado es valido pero yo haria esto:

Código:

sqrt (sqr(a) + sqr(b))
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3770
Ubicación: Mexico

MensajePublicado: 11/11/2007 6:49 am
Título:

En el lenguaje C no hay un operador de potencia, '^' es el operador XOR a nivel de bits.

Para obtener el cuadrado de un numero lo mas sencillo seria multiplicarlo por el mismo o utilizar la funcion pow cuyo prototipo o firma se encuentra en <math.h> y este es:
Código:
double pow(double base, double exp);


Tambien deberias eliminar la variable "hipotenusa" porque a esta le asignas un valor pero no utilizas este despues en el programa, o bien dejala ahi pero utilizala cuando llames a la funcion printf.

Tambien te faltaba un parentesis de cierre en la llamada a printf.

Tambien deberias utilizar variables de tipo double y utilizar el tipo float solo cuando sea absolutamente necesario, esto porque casi todas las funciones de la biblioteca estandar de C que devuelven valores de tipo flotante lo hacen mediante el tipo double y tambien porque ese es el tipo de las constantes literales como 3.141592.

El programa modificado (C estandar):
Código:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main (void)
{
   double a;
   double b;
   double hipotenusa;
   
   printf("Introduce el primer cateto: ");
   fflush(stdout);
   if (scanf("%lf", &a) != 1)
      return EXIT_FAILURE;
   
   printf("Introduce el segundo cateto: ");
   fflush(stdout);
   if (scanf("%lf", &b) != 1)
      return EXIT_FAILURE;
   
   hipotenusa = sqrt(pow(a, 2) + pow(b, 2));
   printf("La hipotenusa es %f\n", hipotenusa);
   system("pause");
   
   return EXIT_SUCCESS;
}


Por ultimo y como ya te haba comentado antes: Si apenas inicias tus estudios en el lenguaje C lo mejor que puedes hacer con tus programas es compilarlos en el modo mas estricto que permita tu compilador ya que esta es la forma mas sencilla de detectar los errores. Como hacerlo depende del compilador que se utilize y debe describirse claramente en su documentacion.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
Aredhel



Registrado: 09 Nov 2007
Mensajes: 8

MensajePublicado: 11/11/2007 10:45 pm
Título:

Muchas gracias, toda tu ayuda me es muy util, gracia Smile
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com