fork download
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4. #include <fstream>
  5.  
  6. using namespace std;
  7. int main(){
  8. double G,r,msol,multiplicacion,distancia;
  9. G=0.00000006673;
  10. //Declaracion de la variable tiempo
  11. int n;
  12. n=0;
  13. cout << "Indique el tiempo de la simulacion: ";
  14. cin >> n;
  15. int t[n];
  16. for (int i=0; i<n; i++)
  17. {
  18. t[i]=i;
  19. }
  20.  
  21.  
  22.  
  23. //Declaraciones de la configuracion de los planetas
  24. int np;
  25. np=4;
  26. distancia=0;
  27. double f[np];
  28. double f2[np][np];
  29. msol=1.989e30;
  30. multiplicacion=0;
  31. double vecx[np]= {57.909e9,108.209e9,149.596e9,227.923e9};
  32. double masas[np]={0.33011e24,4.8675e24,5.9724e24,0.64171e24};
  33. double velocidady[np]={47.36e3,35.02e3,29.78e3,24.07e3};
  34. //Fuerza gravitacional del sol con los otros planetas.
  35. for (int i=0; i < np; i++)
  36. {
  37. multiplicacion=-G*msol*masas[i];
  38. distancia = vecx[i]*vecx[i];
  39. f[i]=multiplicacion/distancia;
  40.  
  41.  
  42. }
  43. //Fuerza gravitacional de la interaccion con otros planetas
  44. //Se usaron if para indicar el sentido vectorial de las fuerzas
  45. for (int i=0; i < np; i++)
  46. {
  47. for (int j=0; j < np; j++)
  48. {
  49. if (vecx[j]-vecx[i] > 0)
  50. {
  51.  
  52. multiplicacion=G*masas[i]*masas[j];
  53. distancia=pow(vecx[j]-vecx[i],2);
  54. f2[i][j]=multiplicacion/distancia;
  55.  
  56. }
  57. else if (vecx[j]-vecx[i] < 0)
  58. {
  59. multiplicacion=-G*masas[i]*masas[j];
  60. distancia=pow(vecx[j]-vecx[i],2);
  61. f2[i][j]=multiplicacion/distancia;
  62.  
  63. }
  64.  
  65. else
  66. {
  67. f2[i][j]=0;
  68. }
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75. }
  76. }
  77.  
  78.  
  79.  
  80. //Interaccion de la fuerza gravitacional del sistema solar con un planeta
  81. double ft[np];
  82. //Suma vectorial de las fuerzas
  83. for (int i=0; i<np; i++)
  84. {
  85.  
  86. for (int j=0; j<np; j++)
  87. {
  88.  
  89. ft[i]=f[j]+f2[i][j];
  90.  
  91. }
  92.  
  93. }
  94.  
  95. //Calculo de las posiciones x,y,z y guardado en un archivo.txt
  96. double X = 0.0;
  97. double Y = 0.0;
  98. double Z = 0.0;
  99. string nombres[np]={"planeta1.txt","planeta2.txt","planeta3.txt","planeta4.txt"};
  100. for (int i=0 ; i<np; i++)
  101. {
  102. ofstream archivo;
  103. archivo.open(nombres[i]);
  104.  
  105. for(int j=0; j<n; j++)
  106. {
  107. X=vecx[i]+(0.5*ft[i])*t[j];
  108. Y=velocidady[i]*t[j];
  109. Z=0;
  110. archivo << X << ", " << Y << ", " << Z << endl;
  111.  
  112. }
  113. }
  114. }
  115.  
Success #stdin #stdout 0.01s 5480KB
stdin
Standard input is empty
stdout
Indique el tiempo de la simulacion: