Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: sora_ori en 13 Marzo 2013, 17:25 pm



Título: Programa para pasar de numero decimal a coma flotante
Publicado por: sora_ori en 13 Marzo 2013, 17:25 pm
Tengo que hacer un programa que transforme un decimal muy grande a coma flotante, es para un proyecto de clase pero no tengo ni papa de que es lo que me piden...



Citar
La notación científica es usada para representar números reales. Siendo r el número real a representar, la representación en notación científica está compuesta de tres partes:


r=c * b^e

  • c. El coeficiente, conformado por un número real con un solo dígito entero seguido de una coma (o punto) y de varios dígitos fraccionarios.
  • b. La base, que en nuestro sistema decimal es 10, y en el sistema binario de los computadores es 2.
  • e. El exponente entero, el cual eleva la base a una potencia


Agradecería una ayudita ;)


Gracias!


Título: Re: Programa para pasar de numero decimal a coma flotante
Publicado por: amchacon en 13 Marzo 2013, 20:40 pm
Lo unico que tienes que hacer es pasar un numero a notación científica:

Citar
1,5x10^3

Para ello, divide entre diez hasta que te quede un numero menor que 10. La cantidad de veces que dividas será el exponente del 10^


Título: Re: Programa para pasar de numero decimal a coma flotante
Publicado por: pacoperico en 13 Marzo 2013, 20:44 pm
Intenta hacer primero una version de tu programa para que podamos ayudarte a resolver los problemas que te vayan saliendo.


Título: Re: Programa para pasar de numero decimal a coma flotante
Publicado por: 85 en 15 Marzo 2013, 03:02 am
Mirá esto no es lo que vos estás pidiendo, pero te puede dar alguna idea:

Código
  1.  
  2. //
  3. // By 85
  4. // elhacker.net
  5. // etalking.com.ar
  6. // 2013
  7. //
  8.  
  9. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  10.  
  11. #pragma warning(disable: 4244)
  12. #pragma warning(disable: 4390)
  13. #include<windows.h> // SYSTEM (stdlib.h)
  14. #include<stdio.h>
  15. #include"ascii.h"
  16.  
  17. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  18.  
  19. void Factorizar(int num){
  20.  
  21. int copia= num, m = 1, cifras = 1;
  22. for(;copia>=10;copia/=10) cifras++;
  23. for(int x=0;x<(cifras-1);x++) m*=10;
  24. float v1=num;
  25. int v2=0, v3=num;
  26. for(int i=0; i<cifras; i++){//Descompone en factores
  27.  
  28. printf("%f\n",v1);
  29. system("pause");
  30. v1/=m;
  31. v2=(int)v1*m;
  32. v3-=v2;
  33. m/=10;
  34. v1=v3;
  35. }
  36. }
  37.  
  38. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  39.  
  40. void IngresoInt(){
  41.  
  42. int n;
  43. printf("Ingrese un número\n");
  44. scanf("%d",&n);
  45. Factorizar(n);
  46. }
  47.  
  48. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  49.  
  50. void Factorizar2(char* num){//TODO: Comprobación de ingreso no válido (ver ascii.h)
  51.  
  52. int sig=0;
  53. if((sig=num[0]=='+')||(sig=num[0]=='-'));
  54. int len=strlen(num);
  55. int ac=0, v1, cifras = len,m = 1;
  56. for(int x=0;x<((cifras-1)-sig);x++) m*=10;
  57. for(int i=sig;i<cifras;i++){//Factoriza y acumula
  58. v1=num[i]-'0';
  59. v1*=m;
  60. printf("%d\n",v1);
  61. system("pause");
  62. ac+=v1;
  63. m/=10;
  64. }
  65. printf("%d\n",ac);
  66. system("pause");
  67. }
  68.  
  69. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  70.  
  71. void IngresoString(){
  72.  
  73. char n[256];
  74. printf("Ingrese un número\n");
  75. scanf("%s",n);
  76. Factorizar2(n);
  77. }
  78.  
  79. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  80.  
  81. int main(){
  82.  
  83. IngresoInt();
  84. //IngresoString();
  85. system("pause");
  86. return 0;
  87. }
  88.  
  89. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  90.  
  91.  
http://www.mediafire.com/?2or6l2m3p9jqzwa

otra cosa, es que si tenés que exponenciar consideres usar la función POW, aunque podés safar de usarla si querés hacer como en estas funciones mías.

88
 



Título: Re: Programa para pasar de numero decimal a coma flotante
Publicado por: 85 en 15 Marzo 2013, 03:22 am
Hola, chicos, quiero compartir mi experiencia de compra en línea. Compré muchos productos de diferentes tiendas en línea. pero sólo una tienda profundamente en mis recuerdos. cómo expresar mis sentimientos? nada que decir. perfecto! También me acuerdo de lo que he comprado. que es de 4,7 pulgadas Android 4.1 Smartphone i9300. es de dos años. pero ahora todavía lo utilizan. siguen funcionando bien. toque flexible, píxeles, velocidad de internet súper rápido. ritmo alarmante aprender nuevos juegos. en ese momento me compré muy caro. pero ahora de vez en cuando ver este teléfono en un blog. Yo estaba tan sorprendido. todas las funciones son las mismas, pero su caída de precios de 100 €. tan increíble. así que hoy me decido a comprar uno nuevo. muy vale la pena! realmente perfecto! mientras tanto se lo recomiendo a todo el mundo. si necesitas un smartphone, esta es tu mejor opción. no tengas duda! comprar ahora mismo:    http://baseurl.de/t8

baaaaaaaaaaaannnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn!
es un bot


Título: Re: Programa para pasar de numero decimal a coma flotante
Publicado por: rir3760 en 15 Marzo 2013, 04:28 am
baaaaaaaaaaaannnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn!
es un bot
Cuando eso suceda no cites el spam (incluyendo el vinculo). En su lugar deja que los moderadores hagan su trabajo (si no te molesta cuando detectes un mensaje como ese puedes enviarles un MP).

Un saludo


Título: Re: Programa para pasar de numero decimal a coma flotante
Publicado por: sora_ori en 5 Abril 2013, 14:22 pm
Gracias por la ayuda, me lo estuve mirando y encontré esto:

Código
  1. // modify floatfield
  2. #include <iostream>     // std::cout, std::fixed, std::scientific
  3.  
  4. int main () {
  5.  double a = 3.1415926534;
  6.  double b = 2006.0;
  7.  double c = 1.0e-10;
  8.  
  9.  std::cout.precision(5);
  10.  
  11.  std::cout << "default:\n";
  12.  std::cout << a << '\n' << b << '\n' << c << '\n';
  13.  
  14.  std::cout << '\n';
  15.  
  16.  std::cout << "fixed:\n" << std::fixed;
  17.  std::cout << a << '\n' << b << '\n' << c << '\n';
  18.  
  19.  std::cout << '\n';
  20.  
  21.  std::cout << "scientific:\n" << std::scientific;
  22.  std::cout << a << '\n' << b << '\n' << c << '\n';
  23.  return 0;
  24. }


Resultado:

default:
3.1416
2006
1e-010

fixed:
3.14159
2006.00000
0.00000

scientific:
3.14159e+000
2.00600e+003
1.00000e-010




Esto sería correcto cuando lo pasa a notación cientifica ?




Título: Re: Programa para pasar de numero decimal a coma flotante
Publicado por: leosansan en 5 Abril 2013, 19:15 pm


Esto sería correcto cuando lo pasa a notación cientifica ?



Justito es lo correcto.

Saluditos!. ....
(http://st.forocoches.com/foro/images/smilies/ciao.gif)