So, I'll just come out and say that I'm new to C programming. I took an introduction class for it this semester and I'm currently creating a code of my own.
The program is meant to calculate the time it would take for two galaxies to merge after meeting. Treating them both as point-masses, here are the inputs:
R = distance between the galaxies = 0. 45 (kpc)
Mtot = total mass of the two galaxies = 3762e39 (kg)
v = velocity of the approaching galaxy = 150 (km/s)
The program plugs that into the equation for C and T = (2*Pi*v*R^2)/(C*G*Mtot) and outputs the value for T, which comes out to be 1. 87 x 10^9.
What I'm trying to do with the second part is have the program able to return that T in increments. For example, when T = 1 x 10^9 (1 billion years), then the other galaxy is ___ kpc away, and so on. And I want it to be able to do this starting from the initial R, 0. 45 kpc, and ending when R = 0.
Here's the code:
#include <stdio. h>
#include <math. h>
double G, T, Mtot, R, v, B, A, C, Pi, distance;
int main (void)
G = 6. 67e-11;
Pi = 3. 14159;
printf("Enter the combined mass of the systems (kg):");
printf("Enter distance between galaxies (kpc):");
printf("Enter the relative velocity of the approaching galaxy (km/s):");
while (R > 1. 0e-21)
C = ((pow(v,2))/2. 0) - (G*Mtot)/R;
T = (2. 0*Pi*v*(pow(R,2)))/(C*G*Mtot);
printf("\nWhen T = %d years",T);
printf(" then the other galaxy is %f kpc away",R);
It compiles and runs fine, but it returns the T values backwards. As in, it returns that when T = 1. 87. . . , R = 0. 45 (the initial R value), when it should be the flipped. R should be 0 when T = 1. 87. . .
Could someone tell me how I could essentially reverse the order of the output? Or perhaps point out in my code why it's printing the results this way? Any help would be appreciated.
This is C, by the way, and the compiler I use is Cygwin.