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!
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^
Intenta hacer primero una version de tu programa para que podamos ayudarte a resolver los problemas que te vayan saliendo.
Mirá esto no es lo que vos estás pidiendo, pero te puede dar alguna idea:
//
// 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
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
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
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 ?
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!. .... (http://st.forocoches.com/foro/images/smilies/ciao.gif)