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

void distCalc(double *a, double *b, double *c) {
	*c = sqrt(pow(b[0] - a[0], 2) +
		  pow(b[1] - a[1], 2) +
		  pow(b[2] - a[2], 2));
}

void usage(void) {
	printf("Enter X1, X2 and X3 coordinates for Point A and B.\n");
	printf("Example: pointdist 1 2 3 1 2 3\n");
	exit(1);
}

void errorMessage(int a, int *b) {
	if (a == 0 && *b < 7) {
		printf("Too few arguments!\n");
		usage();
	}

	if (a == 0 && *b > 7) {
		printf("Too many arguments!\n");
		usage();
	}

	if (a > 3 && *b == 7) {
		printf("Invalid X%i coordinate for point B!\n", a - 3);
		usage();
	}

	if (a > 0 && a < 4 && *b == 7) {
		printf("Invalid X%i coordinate for point A!\n", a);
		usage();
	}
}

int main(int argc, char *argv[]) {
	int i = 0;
	double dist = 0;
	double vectorA[3] = {0};
	double vectorB[3] = {0};

	errorMessage(&i, &argc);

	for (i = 0; i < 3; i++) {
		if (sscanf(argv[i + 1], "%lf", &vectorA[i]) != 1) {
			errorMessage(i + 1, &argc);
		}

		if (sscanf(argv[i + 4], "%lf", &vectorB[i]) != 1) {
			errorMessage(i + 4, &argc);
		}
	}
	
	distCalc(vectorA, vectorB, &dist);

	printf("%.2lf\n", dist);

	return 0;
}
