| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
Aredhel
Registrado: 09 Nov 2007 Mensajes: 8
| Publicado: 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: 19
| Publicado: 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: 3921 Ubicación: Mexico
| Publicado: 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
| Publicado: 11/11/2007 10:45 pm | | | Título: |
| Muchas gracias, toda tu ayuda me es muy util, gracia  |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |