C/C++の宿題片付けます 149代目
■ このスレッドは過去ログ倉庫に格納されています
0758デフォルトの名無しさん
2011/06/18(土) 16:52:29.84#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct { int x; int y; } ZAHYO;
#define N 10
#define R 10
#define TENSU 30
ZAHYO ten[TENSU];
double distance(int m, int n){ double d=pow(ten[m].x-ten[n].x, 2) + pow(ten[m].y-ten[n].y, 2); return sqrt(d); }
int tikaiten( int m, int n, int r) { // ten[m]から距離R以内でten[n]に最も近い点
int i, hozon=0; double hozon_d = r+1;
for(i=0; i<TENSU; i++) {
if( distance( m, i) > r ) continue;
double d=distance( n, i);
if(d>=hozon_d) continue;
hozon_d=d; hozon=i;}
return hozon;}
int main() {
int su=0,i;
while(su < TENSU) {
int x=rand()%N; int y=rand()%N;
for(i=0; i<su; i++) if(ten[i].x==x && ten[i].y==y ) break; if( i<su ) continue;
su++; ten[su].x=x; ten[su].y=y; }
int m=0, n=1;
while( distance (m, n) >R ) {
int k = tikaiten( m, n, R); int l = tikaiten( n, m, R);
if(k==m && l==n) { printf("×\n"); return 0; }
m=k; n=l;}
printf("○\n");}
■ このスレッドは過去ログ倉庫に格納されています