Pagini recente » Cod sursa (job #2940815) | Cod sursa (job #445489) | Cod sursa (job #2817347) | Cod sursa (job #1671084) | Cod sursa (job #7234)
Cod sursa(job #7234)
#include <stdio.h>
#include <math.h>
#include <float.h>
double c[100];
int d[100];
int egal(float a,float b)
{
if (abs(a-b)>=0.0001)
return 0;
else
return 1;
}
int comp(float a,float b)
{
if (b-a>=0.0001)
return 1;
else
return 0;
}
void Sort(int l, int r)
{
int i, j, aux;
double y,x;
i = l;
j = r;
x = c[(l+r)/2];
do
{
while (comp(c[i], x))
i = i + 1;
while (comp(x, c[j]))
j = j - 1;
if (i <= j)
{
y = c[i];
c[i] = c[j];
c[j] = y;
aux=d[i];
d[i]=d[j];
d[j]=aux;
i = i + 1;
j = j - 1;
}
}
while (i <= j);
if (l < j) Sort(l, j);
if (i < r ) Sort(i, r);
}
int main()
{
FILE *in,*out;
int n,i,j,j2,aux=0;
float a[100],b[100];
long nr=0;
in=fopen("patrate3.in","r");
out=fopen("patrate3.out","w");
fscanf(in,"%d",&n);
for(i=1;i<=n;i++)
{
fscanf(in,"%f%f",&a[i],&b[i]);
}
i=1;
while (i<=n-3)
{
for (j=1;j<=n;j++)
d[j]=j;
for (j=i+1;j<=n;j++)
c[j]=sqrt((a[i]-a[j])*(a[i]-a[j])+(b[i]-b[j])*(b[i]-b[j]));
Sort(i+1,n);
for (j=i+1;j<=n;j++)
while (egal(c[j],c[j+1]))
{
for (j2=j+1;j2<=n;j2++)
if ((egal(c[j2],c[j]*sqrt(2)))&&(egal(c[j],sqrt((a[d[j]]-a[d[j2]])*(a[d[j]]-a[d[j2]])+(b[d[j]]-b[d[j2]])*(b[d[j]]-b[d[j2]]))))&&(egal(c[j],sqrt((a[d[j+1]]-a[d[j2]])*(a[d[j+1]]-a[d[j2]])+(b[d[j+1]]-b[d[j2]])*(b[d[j+1]]-b[d[j2]])))) )
nr++;
j++ ;
}
i++;
}
fprintf(out,"%ld",nr);
fclose(out);
fclose(in);
return 0;
}