elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Ejercicio] Sin usar tipo float
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ejercicio] Sin usar tipo float  (Leído 2,882 veces)
Miky Gonzalez

Desconectado Desconectado

Mensajes: 87

http://mikygonzalez.comule.com/blog/


Ver Perfil WWW
[Ejercicio] Sin usar tipo float
« en: 7 Septiembre 2013, 16:13 pm »

Supongamos por un momento que debes hacer un programa que calcule, lo más exactamente posible, una media, o cálculos, que de seguro, tendrán decimales. Sólo hay una pega, no puedes usar el tipo float bajo ningún concepto.

Lo mejor para este ejercicio sería crear un archivo de cabezera que incluya estructura para crear tu propio tipo float basandote en tipos enteros. Hacer eso es muy facil:

Código
  1. typedef struct _real {
  2.        int entero;
  3.        unsigned long int decimal;
  4. } real_t;
  5.  

Pero se deben crear tambien unas funciones que nos permita actuar con sencillez, como si de un tipo entero se tratase. Puedes empezar por estas funciones:

Código
  1. real_t declarar_real(int entero, unsigned long int decimal) {
  2.    real_t real;    
  3.  
  4.    real.entero = entero;
  5.    real.decimal = decimal;
  6.  
  7.    return real;
  8. }
  9.  
  10. #define mostrar_real(a) printf("%d.%u", a.entero, a.decimal)
  11.  

Lo que se pide en este ejercicio, para quienes quieran hacerlo para practicar sus conocimientos:
Crear funciones de suma y resta de numeros tipo real, al igual que funciones de multiplicación y división.
Si has echo lo anterior, prueba a modificar la estructura para que admita un número ilimitado de decimales (podrías hacerlo con una matriz dinámica).


En línea

Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica:


EN CONSTRUCCIÓN
Alien-Z

Desconectado Desconectado

Mensajes: 177


C++ Programmer


Ver Perfil
Re: [Ejercicio] Sin usar tipo float
« Respuesta #1 en: 7 Septiembre 2013, 18:10 pm »

La idea está perfectamente planteada, pero te dejo una anotación:

Si estás trabajando en C++ existe una técnica especialmente diseñada para lo que intentas hacer: sobrecarga de operadores. Esto permite que al crear un tipo nuevo, para utilizar con él operaciones primitivas, defines tú mismo la implementación de los operadores; aqui tienes una explicación completa y con ejemplos: http://c.conclase.net/curso/?cap=022

En C lamentablemente no existe tal cosa y hay que hacerlo con funciones.

Un saludo.


En línea

roilivethelife

Desconectado Desconectado

Mensajes: 54


Ver Perfil
Re: [Ejercicio] Sin usar tipo float
« Respuesta #2 en: 7 Septiembre 2013, 20:31 pm »

Como apunte, hay procesadores de sistemas embebidos, donde se usa punto fijo,que vendria a ser lo que pide el ejercicio.

Y en aplicaciones que requieran mucho rendimiento a veces se cambia el float por punto fijo.

Un saludo
En línea

Miky Gonzalez

Desconectado Desconectado

Mensajes: 87

http://mikygonzalez.comule.com/blog/


Ver Perfil WWW
Re: [Ejercicio] Sin usar tipo float
« Respuesta #3 en: 8 Septiembre 2013, 16:00 pm »

Entiendo lo que quieren decir, gracias por comentar.

Anotando, el ejercicio es puesto para C, no soy amigo de C++. Y la idea esque el que quiera lo utilice si no tiene nada que hacer e incluso podria sacar una libreria propia de numeros reales de tamaño ilimitado (aka GMP).

Saludos
En línea

Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica:


EN CONSTRUCCIÓN
do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: [Ejercicio] Sin usar tipo float
« Respuesta #4 en: 10 Septiembre 2013, 19:31 pm »

¡Buenas!

Otra alternativa es utilizar números racionales. Con racionales puedes aproximar un número real todo lo que quieras (es decir, puedes cometer un error todo lo pequeño que quieras).

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ejercicio en c#/tipo consola
Ejercicios
ronald hisp 4 7,413 Último mensaje 1 Mayo 2008, 01:21 am
por ECDundy
Creación del tipo de dato float, implementación de la clase
Desarrollo Web
jhonatanAsm 7 5,125 Último mensaje 16 Agosto 2011, 15:56 pm
por jhonatanAsm
Consulta; ¿Que tipo de ejercicio les parece adecuado?
Programación C/C++
astinx 0 1,529 Último mensaje 10 Abril 2012, 15:15 pm
por astinx
Problema sencillo de una salida tipo Float en C++
Programación C/C++
ThronerAXE 4 2,814 Último mensaje 20 Diciembre 2013, 03:14 am
por rir3760
Extraer datos tipo float de un arreglo a otro
Programación C/C++
leopaez 2 2,008 Último mensaje 10 Diciembre 2016, 17:49 pm
por leopaez
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines