Fotolog

A través del espejo
2010-10-12: A través del espejo
¡La radio habla en binario!
2010-10-10: ¡La radio habla en binario!
Gigaminx (regalo por mi cumple)
2010-09-16: Gigaminx (regalo por mi cumple)
Trini en bici
2010-09-05: Trini en bici
Valporquero
2010-08-28: Valporquero
Mi bici nueva
2010-08-22: Mi bici nueva
Boda de Mario y Ana
2010-08-13: Boda de Mario y Ana
De cañones en Guara
2010-08-07: De cañones en Guara
Trini y Mari en Marbella
2010-08-05: Trini y Mari en Marbella
Trini y Chelo en Tabarca
2010-08-03: Trini y Chelo en Tabarca
Valid XHTML 1.1
Acceder
Volver a la lista de problemas

The Circumference of the Circle

438.c

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

#define PI 3.141592653589793

int main(int argc, char *argv[])
{
	char buf[1024];
	double a1,a2,b1,b2,c1,c2;
	double circ;

	while(fgets(buf, 1024, stdin)) {
		double p1,p2,pm,pn,q1,q2,qm,qn;	/* y = pm*x + pn */
		double x,y;
		if (sscanf(buf, "%lf %lf %lf %lf %lf %lf", &a1, &a2, &b1, &b2, &c1, &c2)!=6) {
			exit(1);
		}

		if (a2==b2) {
			double t;
			t=a1; a1=c1; c1=t;
			t=a2; a2=c2; c2=t;
		} else if (a2==c2) {
			double t;
			t=a1; a1=b1; b1=t;
			t=a2; a2=b2; b2=t;
		}

		p1=(a1+b1)/2;
		p2=(a2+b2)/2;
		pm=(b1-a1)/(a2-b2);
		pn=p2-pm*p1;

		q1=(a1+c1)/2;
		q2=(a2+c2)/2;
		qm=(c1-a1)/(a2-c2);
		qn=q2-qm*q1;

		x = (qn-pn)/(pm-qm);
		y = pm*x + pn;

		circ = 2*PI*(sqrt((x-a1)*(x-a1)+(y-a2)*(y-a2)));

		printf("%.2f\n", circ);
	}
	exit(0);
}