Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema

Estas en el tema de Problema en el foro de C/C++ en Foros del Web. No es para Escuela u otra cosa (no estudio actualmente).... solamente es ke la semana pasada vi un vídeo en el you tube y pues ...
  #1 (permalink)  
Antiguo 23/04/2012, 15:58
 
Fecha de Ingreso: abril-2012
Mensajes: 1
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta Problema

No es para Escuela u otra cosa (no estudio actualmente).... solamente es ke la semana pasada vi un vídeo en el you tube y pues me entro el gusanito por la programación y todo iba bien hasta que me encontré con mi primer problema... ya que al correrlo me da una cifra redondeada :( y no se ke hacer..... les dejo mi código para que le echen un vistazo, desde ahorita les pido una disculpa por la forma en que lo redacto puesto, como ya les dije son un chico mexicano que no conoce mucho sobre el tema y ademas no tengo nadie cercano que me pueda ayudar.... Es por eso que les pido de favor si alguien me puede ayudar con esto, darme sugerencias o sugerirme algún tutorial en verdad no saben como me harían feliz, ya que pienso que si me corrigen, más aprendo y esto del C la verdad es mejor que un Age of Empires o una peli de la señorita Esperanza Gomez. Invoco a los grandes Senseis vengan a miiiiiii..... ¬_¬ jejeje.

// Programa que obtiene la Fuerza Gravitacional de 2 cuerpos

#include<iostream>
#include<stdio.h>
#define p printf
#define s scanf
#define pause system("pause");
int main()
{
double m1,m2,d,f;
double g=0.0000000000673;
p("\n\n\tHola yo solo sirv%c para obtener la Fuerza Gravitacional de 2 cuerpos\n\n\t",162);
p("\n\tPara obtenerla utilizo la siguiente f%crmula F=(G*m1*m2)/d^2\n\n\t\t\t\t\t",162);

pause
p("\n\n\tDonde: F=((m1*m2)/d^2)*G\n\n\t");
p("\n\n\t F= Es la Fuerza Gravitacional que deseamos obtener\n\n");
p("\n\n\t G= 6.673x10^-11 (Nm^2/Kg^2) (Es la constante de Gravitaci%cn Universal)\n\n\t",162);
p("\n\n\t m1= Masa del 1er cuerpo esta tiene que estar en Kg\n\n");
p("\n\n\t m2= Masa del 2do cuerpo esta tambi%cn tiene que estar en Kg\n\n",130);
p("\n\n\t d^2= Es la Distancia que existe entre ellos y esta se eleva al cuadrado\n\n\t\t\t");
pause
p("\n\n\t Ahora ingresemos los datos para obtener la Fuerza Gravitacional\n\n\t");
p("\n\n\n\t\t\t F=((m1*m2)/d^2)*G\n\n\t");
p("\n\n\n\t\t\t m1=");
s("%lf",&m1);
p("\n\n\n\t\t\t m2=");
s("%lf",&m2);
p("\n\n\n\t\t\t d=");
s("%lf",&d);
f=((m1*m2)/(d*d))*g;
p("\n\n\n\t\t La Fuerza Gravitacional es:%lf\n\n\t\t\t",f);
pause


return 0;
}
  #2 (permalink)  
Antiguo 23/04/2012, 19:57
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 11 meses
Puntos: 94
Respuesta: Problema

Hola! El problema esta en no especificar los decimales que se van a ver en el ultimo printf. Al ser un numero tan chico, por defecto el printf solo muestra "x" decimales. Para cambiar eso podes usar "los modificadores de formato", entre el "%" y el "lf" tenes que agragar un "."(punto) y un numero, ejemplo:
Código C:
Ver original
  1. p("\n\n\n\t\t La Fuerza Gravitacional es:%.15lf\n\n\t\t\t",f);

Saludos

PD: nunca se me ocurrio hacer esto: #define s scanf #define p printf ... muy bueno! xD
  #3 (permalink)  
Antiguo 25/04/2012, 06:30
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 5 meses
Puntos: 73
Respuesta: Problema

El especificador de formato "%lf" es para scanf, para indicar que lees un double en lugar de un float. No es necesario en printf.

También tienes los especificadores "%e" (formato exponencial) y "%g" (formato exponencial o normal, aplicará el que resulte más corto de imprimir).
  #4 (permalink)  
Antiguo 25/04/2012, 12:04
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 11 meses
Puntos: 94
Respuesta: Problema

Cita:
También tienes los especificadores "%e" (formato exponencial) y "%g" (formato exponencial o normal, aplicará el que resulte más corto de imprimir).
me habia olvidado de esos formatos

Última edición por cesar_casla; 25/04/2012 a las 12:12

Etiquetas: int, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:09.