Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

could someone translate this from c to c++, thanks #include <stdio.h> #include <

ID: 3608794 • Letter: C

Question

could someone translate this from c to c++, thanks



#include <stdio.h>
#include <math.h>

int

main()

{
   int s; /* switch */
   double gamma;
   double omega;
   double tend, dt, t; /* control parameter */
   int nt; /* number of steps */
   int i; /*loop control*/
   void euler (double*, double*, double, double,double, double);
   void cromer (double*, double*, double, double,double, double);
   void midpoint (double*, double*, double, double,double, double);

   FILE *feuler;
   FILE *fcromer;
   FILE *fmidpoint;

   double x, v; /* calculatings */

   printf(" *driven dumpedoscillator* ");
   printf(" Enter Omega: ");
   scanf("%le", &omega);
   printf("Enter Gamma: ");
   scanf("%le", &gamma);
   printf(" Enter the time forevaluation: ");
   scanf("%le", &tend);
   printf(" Enter the number ofintervals: ");
   scanf("%d", &nt);

   dt = tend / nt; /* determine dt */
   tend = dt * nt; /* make sure, tend fits(rounding of dt) */

   /* printf(" Enter desired method: (1)Euler (2) Euler-Cromer"); */
   /* printf(" (3) Midpoint "); */
   /* scanf("%d", &s); */   
  
   for (s=1; s<=3; s++) {    

   x=0;
   v=0;

   if (s==1)
   feuler= fopen ("euler.out","w");
   else if (s==2)
   fcromer= fopen ("cromer.out", "w");
   else if (s==3)
   fmidpoint= fopen ("midpoint.out", "w");
   else printf("not a valid option! ");

   for (i=0; i <= nt; i++) {
       t = i * dt;
       if (s==1){
       euler ( &x, &v,gamma, omega, t, dt);
       /* printf("%2.4f %2.6f %2.6f ", t, x, v); */
       fprintf(feuler,"%2.4f %2.6f %2.6f ", t, x, v);
       } else if (s==2){
       cromer ( &x, &v,gamma, omega, t, dt);
       /* printf("%2.4f %2.6f %2.6f ", t, x, v); */
       fprintf(fcromer,"%2.4f %2.6f %2.6f ", t, x, v);
       } else if (s==3){
       midpoint ( &x, &v,gamma, omega, t, dt);
       /* printf("%2.4f %2.6f %2.6f ", t, x, v); */
       fprintf(fmidpoint,"%2.4f %2.6f %2.6f ", t, x, v);
       } else {
       printf (" illegalinput! ");
       }     
       }
  
   if (s==1)
   fclose (feuler);
   else if (s==2)
   fclose (fcromer);
   else if (s==3)
   fclose (fmidpoint);  
   }

}

/* Acceleration: */

double accell (double x, double gamma, double v, double omega,double t)
{
       return( - x - gamma * v + sin( omega * t ));
}

/* Euler: */
void
euler (double *x, double *v, double gamma, double omega, double t,double dt)
{
   double accell (double, double, double, double,double);
   double xn=*x, vn=*v;


   *v = vn + dt * accell( xn, vn, gamma, omega,t);
   *x = xn + dt*vn;
}
      
/* Euler Cromer */      
void
cromer (double *x, double *v, double gamma, double omega, double t,double dt)
{
   double accell (double, double, double, double,double);
   double xn=*x, vn=*v;

   *v = vn + dt * accell ( xn, vn, gamma, omega,t);
   *x = xn + dt * *v;
}

/* Midpoint Method */
void
midpoint (double *x, double *v, double gamma, double omega, doublet, double dt)
{
   double accell (double, double, double, double,double);
   double xn=*x, vn=*v;

   *v = vn + dt * accell ( xn, vn, gamma, omega,t);
   *x = xn + 0.5 * dt * (*v + vn);
}

Explanation / Answer

#include #include using namespace std;intmain(){int s; /* switch */double gamma;double omega;double tend, dt, t; /* control parameter */int nt; /* number of steps */int i; /*loop control*/void euler (double*, double*, double, double, double, double);void cromer (double*, double*, double, double, double, double);void midpoint (double*, double*, double, double, double, double);FILE *feuler;FILE *fcromer;FILE *fmidpoint;double x, v; /* calculatings */cout