#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstdio>
using namespace std;
int main()
{
ifstream input("geom.dat");
int natom;
input >> natom;
int *zval = new int[natom];
double *x = new double[natom];
double *y = new double[natom];
double *z = new double[natom];
for(int i=0; i < natom; i++)
input >> zval[i] >> x[i] >> y[i] >> z[i];
input.close();
cout << "Number of atoms: " << natom << endl;
cout << "Input Cartesian coordinates:\n";
for(int i=0; i < natom; i++)
printf("%d %20.12f %20.12f %20.12f\n", (int) zval[i], x[i], y[i], z[i]);
delete[] zval;
delete[] x; delete[] y; delete[] z;
return 0;
}
An even more elegant solution would be to couple the above to the Molecule class we defined earlier in the Fundamentals section:
#include "molecule.h"
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstdio>
using namespace std;
int main()
{
Molecule mol("geom.dat", 0);
cout << "Number of atoms: " << mol.natom << endl;
cout << "Input Cartesian coordinates:\n";
mol.print_geom();
return 0;
}