Object-Oriented Programming in C++

Code display of PL4/struct.cpp

// PL4/struct.cpp
// An example using a struct as a class
// Niels Walet, last updated 04/12/2019
#include<iostream>
#include<string>
#include<cmath>
struct particle
{
  std::string type;
  double mass;
  double momentum;
  double energy;
};
void print_data(const struct particle &p)
{
  std::cout.precision(3); // 2 significant figures
  std::cout<<"Particle: [type,m,p,E] = ["<<p.type<<","<< p.mass
	   <<","<<p.momentum<<","<<p.energy<<"]"<<std::endl;
  return;
}
double gamma(const struct particle &p)
{
  return p.energy/p.mass;
}
int main()
{
  // Create 2 particles 
  particle electron;
  electron.type="electron";
  electron.mass=5.11e5;
  electron.momentum=1.e6;
  electron.energy=sqrt(electron.mass*electron.mass+electron.momentum*electron.momentum);
  particle proton;
  proton.type="proton";
  proton.mass=0.938e9;
  proton.momentum=3.e9;
  proton.energy=sqrt(proton.mass*proton.mass+proton.momentum*proton.momentum);
  // Print out details
  print_data(electron);
  print_data(proton);
  // Calculate Lorentz factors
  std::cout.precision(2);
  std::cout<<"Particle 1 has Lorentz factor gamma="
	   <<gamma(electron)<<std::endl;
  std::cout<<"Particle 2 has Lorentz factor gamma="
	   <<gamma(proton)<<std::endl;
  return 0;
}
Download here; To copy and paste: double click inside code, then copy.