2011-04-18 62 views
1

在這裏我有一些Perl代碼:如何用C代碼編寫?

sub clustering { 
    ($brapa,$gee) = @_; 
    $g=0; 
    while ($g<$brapa) { 
     if (($Y1XY[$g]-$Y2XY[$g])<=0) { push(@Y1new,$g+$gee);} 
     else { push(@Y2new,$g+$gee);} 
     $g++; 
    } 
    $sizeY1new = $#Y1new+1; 
    $sizeY2new = $#Y2new+1; 
} 

的問題是,我已經嘗試將它用C編寫這樣的:

int clustering (int brapa, int gee){ 
    int g; 
    g=0; 
    while (g<brapa) { 
     if ((jarakY1-jarakY2)<=0) { /*stuck at here*/ } 
     else { } 
    } 
    return 0; 
} 

我怎麼能說從jarakY1和jarakY2數據/結果?那麼,我如何在C語言中完美地編寫它?請幫幫我。

+2

答案是:學習C.關於這個主題和網上的教程有很多好書。 – 2011-04-18 06:38:08

+1

什麼是'jarakY1'和'jarakY2'? – 2011-04-18 06:40:36

+1

你的C代碼在變量作用域方面是不相等的。在Perl代碼中使用'my'! – Benoit 2011-04-18 06:40:40

回答

5

Perl內置了C中沒有提供的數據類型和函數。推送就是這種情況。根據您使用結果的方式,您必須編寫自己的堆棧,列表或可變長度數組。

+0

所以,我需要知道如何編寫我自己的堆棧,列表或可變長度數組。你能教我如何寫它,或者你可以建議一些其他的鏈接,我學習。請。 – 2011-04-18 06:48:24

+3

@mohd我相信你可以找人來教你一筆費用!否則,你可能會更好的一本書。爲什麼是C? – 2011-04-18 06:51:40

+2

@Mohd Isa,是的,我可以,但它已經超出了我準備在Stack Overflow這樣的網站上做的事情。我不想花一次所需的時間,我不認爲SO格式適合這項任務。 – AProgrammer 2011-04-18 06:55:39

1

我的第一個問題是:爲什麼要將Perl代碼轉換爲C?

有很多C庫提供類似Perl數組的東西,不要自己寫。一個是Gnome C Library(aka glib),它有several Array types that you can push to

另一種選擇是使用C++和標準模板庫(也稱爲STL)編寫它。他們有a list type with push_front。您可以使用Perl arrays from C,但這不是最簡單的事情。

最後,這裏有a question about learning C這有一些很好的答案。