Programa para pasar de numero decimal a coma flotante

Iniciado por sora_ori, 13 Marzo 2013, 17:25 PM

0 Miembros y 1 Visitante están viendo este tema.

sora_ori

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...



CitarLa 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!

amchacon

Lo unico que tienes que hacer es pasar un numero a notación científica:

Citar1,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^
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

pacoperico

Intenta hacer primero una version de tu programa para que podamos ayudarte a resolver los problemas que te vayan saliendo.

85

#3
Mirá esto no es lo que vos estás pidiendo, pero te puede dar alguna idea:

Código (cpp) [Seleccionar]


//
// By 85
// elhacker.net
// etalking.com.ar
// 2013
//

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#pragma warning(disable: 4244)
#pragma warning(disable: 4390)
#include<windows.h> // SYSTEM (stdlib.h)
#include<stdio.h>
#include"ascii.h"

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void Factorizar(int num){

int copia= num, m = 1, cifras = 1;
for(;copia>=10;copia/=10) cifras++;
for(int x=0;x<(cifras-1);x++) m*=10;
float v1=num;
int v2=0, v3=num;
for(int i=0; i<cifras; i++){//Descompone en factores

printf("%f\n",v1);
system("pause");
v1/=m;
v2=(int)v1*m;
v3-=v2;
m/=10;
v1=v3;
}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void IngresoInt(){

int n;
printf("Ingrese un número\n");
scanf("%d",&n);
Factorizar(n);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void Factorizar2(char* num){//TODO: Comprobación de ingreso no válido (ver ascii.h)

int sig=0;
if((sig=num[0]=='+')||(sig=num[0]=='-'));
int len=strlen(num);
int ac=0, v1, cifras = len,m = 1;
for(int x=0;x<((cifras-1)-sig);x++) m*=10;
for(int i=sig;i<cifras;i++){//Factoriza y acumula
v1=num[i]-'0';
v1*=m;
printf("%d\n",v1);
system("pause");
ac+=v1;
m/=10;
}
printf("%d\n",ac);
system("pause");
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void IngresoString(){

char n[256];
printf("Ingrese un número\n");
scanf("%s",n);
Factorizar2(n);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

int main(){

IngresoInt();
//IngresoString();
system("pause");
return 0;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


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


Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

85

Cita de: hjt123 en 15 Marzo 2013, 03:14 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
Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

rir3760

Cita de: 85 en 15 Marzo 2013, 03:22 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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

sora_ori

Gracias por la ayuda, me lo estuve mirando y encontré esto:

// modify floatfield
#include <iostream>     // std::cout, std::fixed, std::scientific

int main () {
  double a = 3.1415926534;
  double b = 2006.0;
  double c = 1.0e-10;

  std::cout.precision(5);

  std::cout << "default:\n";
  std::cout << a << '\n' << b << '\n' << c << '\n';

  std::cout << '\n';

  std::cout << "fixed:\n" << std::fixed;
  std::cout << a << '\n' << b << '\n' << c << '\n';

  std::cout << '\n';

  std::cout << "scientific:\n" << std::scientific;
  std::cout << a << '\n' << b << '\n' << c << '\n';
  return 0;
}



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 ?



leosansan

Cita de: sora_ori en  5 Abril 2013, 14:22 PM


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



Justito es lo correcto.

Saluditos!. ....