2011-04-17 91 views
0

這裏我有一些問題需要在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"); 

} 

如何分成兩組?第一組是最靠近第一中心點的點,第二組是離第二中心點最近的一點。

+0

這是很難讀的。請縮進您的代碼並在操作員之間使用空格。 – 2011-04-17 02:34:02

+0

我不明白你的意思是什麼。你在問團體還是要點? – Gabe 2011-04-17 02:36:35

+0

我有15分,然後我宣佈第一點和第二點爲中心點。之後,我計算了其他點與中心點之間的距離。最後,我想分兩組參考中心點。 – 2011-04-17 02:41:04

回答

0

有很多方法可以解決這個問題。

最簡單的方法是簡單地創建第三個數組,大小與前兩個數組相同。每個元素對應於每個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]

+0

如何輸入上面的代碼? – 2011-04-17 03:25:05

+0

或者可以根據OP,他*中心點*不是真的固定! – SuperSaiyan 2011-04-17 03:58:26

+0

我需要輸入這個代碼嗎?對不起,我真的很喜歡編程。我需要有人幫忙和監視我。 – 2011-04-17 03:58:43