Título: [C] Obtener valores decimales en un programa de distancia entre dos puntos Publicado por: pinecore en 10 Diciembre 2016, 06:14 am Un saludo a quien lea esto.
Soy principiante en "C" y escribí un intento de programa para obtener la distancia entre dos puntos de un plano cartesiano a manera de ejercicio. El programa funciona perfectamente, excepto por un detalle: Me gustaría poder obtener las distancias en decimales y no sólo en enteros. No sé que hacer, estuve experimentando pero no tuve éxito. Espero que me puedan ayudar. Estoy en Windows y utilizo el compilador GNU CC compiler (creo, eso dice mi IDE). Muchas gracias. Código: /** Programa para encontrar la distancia entre dos puntos **/ Título: Re: [C] Obtener valores decimales en un programa de distancia entre dos puntos Publicado por: engel lex en 10 Diciembre 2016, 06:27 am Código: int distancia mientras que distancia sea de tipo int (entero) solo dará resultados enteros... necesitas que sea tipo float o double (según tus necesidades) aquí mucho de lo que necesitas saber sobre las unidades de coma flotante (decimales) https://es.wikipedia.org/wiki/Coma_flotante (https://es.wikipedia.org/wiki/Coma_flotante) Título: Re: [C] Obtener valores decimales en un programa de distancia entre dos puntos Publicado por: pinecore en 10 Diciembre 2016, 06:31 am Ya lo intenté, y como resultado me da:
-784912405 Título: Re: [C] Obtener valores decimales en un programa de distancia entre dos puntos Publicado por: engel lex en 10 Diciembre 2016, 06:39 am 2 cosas...
-primero tienes un error en tu formula Código: sqrt((1.0 + pow(difx,2)) + (1.0 + pow(dify,2))); y debe ser (pitagoras) -segundo cuidado con el uso de printf... https://www.tutorialspoint.com/c_standard_library/c_function_printf.htm (https://www.tutorialspoint.com/c_standard_library/c_function_printf.htm) %d es para digitos enteros en formato decimal (igual que %i) para digitos de coma flotante usas %f Título: Re: [C] Obtener valores decimales en un programa de distancia entre dos puntos Publicado por: pinecore en 10 Diciembre 2016, 06:44 am La fórmula está bien, tuve que usar los +1 porque el resultado del pow() me daba siempre, por ejemplo: si era 25, me daba 24, con el +1 arreglé eso.
Pero creo que debe de ser lo del printf, lo intentaré. Muchísimas gracias por darle seguimiento. Edición: Ya lo probé, era el printf, ya está todo perfecto. Muchas gracias por la ayuda. Título: Re: [C] Obtener valores decimales en un programa de distancia entre dos puntos Publicado por: engel lex en 10 Diciembre 2016, 07:00 am excelente! igual lee los links para evitar dudas más adelante... y algo que te puede causar dolor de cabeza más adelante si no sabes es la promoción de tipos así que aprovecho para dejartelo de estudio...
lee la primera parte de este articulo "conversión de tipos" http://c.conclase.net/curso/?cap=009 (http://c.conclase.net/curso/?cap=009) basicamente es el porqué esto da un resultado "incorrecto"... si te da 0 está bien... es debido a lo hablado en el articulo int/int = int Código
Título: Re: [C] Obtener valores decimales en un programa de distancia entre dos puntos Publicado por: pinecore en 10 Diciembre 2016, 08:32 am Muchas gracias por resolver mi problema y también por darme todos esos links, los voy a revisar todos.
Gracias por tu tiempo y la molestia. |