Как разделить на две группы? - PullRequest
0 голосов
/ 17 апреля 2011

Здесь у меня есть некоторая проблема, чтобы разделить группировку в C-коде. Ниже мой код C:

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

int main (){
int inp;
inp = 15;

signed int cx[15], cy[15];
cx[0] = 1;
cx[1] = 7;
cx[2] = -2;
cx[3] = -3;
cx[4] = -2;
cx[5] = -2;
cx[6] = -10;
cx[7] = 0;
cx[8] = -1;
cx[9] = 8;
cx[10] = 9;
cx[11] = 10;
cx[12] = -7;
cx[13] = 12;
cx[14] = 11;

cy[0] = -8;
cy[1] = -1;
cy[2] = -10;
cy[3] = -8;
cy[4] = -6;
cy[5] = -10;
cy[6] = 12;
cy[7] = 0;
cy[8] = 5;
cy[9] = -1;
cy[10] = 13;
cy[11] = -10;
cy[12] = 3;
cy[13] = 13;
cy[14] = 0;

int j;
printf ("\n Input (x,y) :\n\n");
for (j=0; j<inp; j++){
printf ("   X%d :(%d,%d)\n",(j+1),cx[j],cy[j]);}

printf ("\n Initial value of 2 centers :\n");
printf ("\n   Y1 = X1 : (%d,%d)\n",cx[0],cy[0]);
printf ("   Y2 = X2 : (%d,%d)\n",cx[1],cy[1]);

printf ("\n Objects-centers distance :\n\n");
for(j=2; j<inp; j++){
float dis1, dis2;
dis1 = sqrt((cx[j]-cx[0])*(cx[j]-cx[0])+(cy[j]-cy[0])*(cy[j]-cy[0]));
dis2 = sqrt((cx[j]-cx[1])*(cx[j]-cx[1])+(cy[j]-cy[1])*(cy[j]-cy[1]));
printf("   X%d -> Y1 : %.5f\t X%d -> Y2 : %.5f\n", (j+1), dis1, (j+1), dis2);}

printf ("\n Objects gouping :\n");

}

Как разделить на две группы? Первая группа - это точка, ближайшая к первой центральной точке, а вторая - точка, ближайшая ко второй центральной точке.

1 Ответ

0 голосов
/ 17 апреля 2011

Существует множество способов решения этой проблемы.

Самое простое - просто создать третий массив, размер которого совпадает с размером первых двух. Каждый элемент будет соответствовать каждой паре cx / cy, и значение будет 0, если эта пара ближе к первой точке, и 1, если она ближе ко второй:

int result[15] = {0,1,0};  // points 2-14 initialized to 0

if (dis1 < dis2)
  result[j] = 0;
else
  result[j] = 1;

Так что, если вы хотите увидеть, находится ли точка 4 ближе к точке 0 или точке 1, просто проверьте значение result[4].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...