//FYLLADIO 4 ASKHSH 14
#include <iostream>
#include <fstream>
#include <math.h>
#define N 30
using namespace std;
class c_point
{
private:
	int counter;
	double x;
	double y;
	double z;
	double d;

public:
	c_point()  //default constructor
	{ counter=0;
		x=0.0; y=0.0; z=0.0;d=0.0;
	};

	c_point(int in_counter,double in_x, double in_y, double in_z, double in_d)
	{	counter=in_counter;
		x=in_x; y=in_y; z=in_z; d=in_d;
	};

	void print()
	{cout<<counter<<" "<<x<<"  "<<y<<"  "<<z<<"  "<<d<<endl;};

	double get_x()  {return x;};
	double get_y()  {return y;};
	double get_z()  {return z;};

}; // end class definition



int main()
{ c_point a[N];
double in_x1,in_y1,in_z1,in_x2,in_y2,in_z2, in_d;
int i,k;

for (i=0;i<N;i++)
	{// RHTH KLHSH STON DEFAULT CONSTRUCTOR !!!
	a[i]=c_point();
	a[i].print();
};
// EISAGVGH TIMWN APO TO ARXEIO data.txt STON PINAKA a[]

ifstream data_file;
data_file.open("data1.txt");
		if(!data_file) {
			cout<<"file does not open"<<endl;
		    exit(1);
		}
		k=0;
		data_file>>in_x1>>in_y1>>in_z1;
		while  ((!data_file.eof()) && (k<N))
		{
			data_file>>in_x2>>in_y2>>in_z2;

			in_d=pow((in_x2-in_x1)*(in_x2-in_x1)+(in_y2-in_y1)*(in_y2-in_y1)+(in_z2-in_z1)*(in_z2-in_z1),0.5);

			if (in_d>0.01)
			{
				//RHTH KLHSH STON CONSTRUCTOR ME TH LISTA PARAMETRWN !!
				a[k]=c_point(k,in_x1,in_y1,in_z1,in_d);
				k++;
			};
			// h trexousa grammi ginetai prohgoumeni
			in_x1=in_x2; in_y1=in_y2;in_z1=in_z2;

		}; // end while
cout<<endl<<"data from file"<<endl;
if (k>0)
	for (i=0;i<k;i++) a[i].print();

// ERWTHMA 4
double total=0.0;

if (k>0)
{
	for (i=0;i<k;i++)
 total=total+pow((a[i].get_x()-1.0)*(a[i].get_x()-1.0)+(a[i].get_y()-2.0)*(a[i].get_y()-2.0)+(a[i].get_z()-3.0)*(a[i].get_z()-3.0),0.5);

cout<<"mesos oros ="<<total/k<<endl;

}
return 0;
}  // end main
