2013-07-01 34 views
0

基本上我正在尋找的是一種將數組內容設置爲例如短語的方法,以將它們組合成單個要比較的單詞。所以當用戶輸入數據時,我可以知道他們有多少個相同長度的單詞。如何比較C或C++數組中的內容

void main(){ 
    char array[30]; 
    int length, cont, array_tokens; 
    printf("enter a phrase: "); 
    scanf("%[^\n]s", array); //or gets(array); which ever one you like 
    /*------------------------- 
     *******magic happens******* 
    ---------------------------*/ 
    for(int i=0; i<wordcount;i++) 
     printf("%d word(s) with %d letters was entered", array_tokens, cont);//some sort of 
    system("pause");              //counter which came 
}                   //with the magic that 
                     //happened before 

所以結果應該是:

輸入短語:用戶輸入與1個字母相似lentgh詞語

1個字(一個或多個)短語被輸入

2輸入4個字母的單詞

輸入1個字母並輸入5個字母

3字(S)與6個字母被輸入

1個字(S)有7個字母是由進入

+2

http://www.cplusplus.com/reference/cstring/strtok/ –

+0

您是否在意冒險到底發生了什麼魔術? – maverick1989

+0

我希望我可以給每個評論一個以上的投票,即羅伯特哈維 – macduff

回答

0

你要句子分成tokens(在這種情況下,個別字)一個delimiter(在這種情況下是一個空格字符)。有很多種方法可以做到這一點。正如羅伯特哈維所建議的,C標準庫提供的一種好的老式C方法是使用strtok。它的工作方式是傳入要分割的字符串,後跟分割字符串的分隔符。

然後,要計算相似長度的單詞,請嘗試爲不同的單詞長度設置整數變量(或者更簡單地在一個頻率數組中,每個索引代表該長度的單詞並且其值是它們出現的次數),遍歷所有的單詞標記,當遇到一個長度的單詞時遞增相應的變量。要獲得C風格字符串的長度,請嘗試strlen

+0

,以便將字符串分隔成我可以使用的單個單詞:'tokens = strtok(array,「。, - 」); while(token!= NULL)printf(「%s \ n」,token); token = strtok(NULL,「。, - 」); }' 但我怎麼能在這裏做字數? – David

+0

使用'for'循環遍歷每個單詞,例如'for(unsigned int i = 0; i

1

那麼,strtok()是解決這個問題的一種方法。如果你打算提高效率(你應該),你應該寫一個循環遍歷句子中的字母。計算自上一個空格以來遇到的非空格字符數,並在每次獲得空格時更新n字母字頻數組。我可以編寫代碼來做到這一點,但是當你自己編寫代碼片時,我不想剝奪你的滿足感。 :P

+0

感謝您的幫助!,我會盡力做到這一點,我對編程有點新,並且希望我能夠獲得更多的解決問題的能力,因爲我再次獲悉更多的感謝! – David

0

可以有一個數組計數其中計數[I]是長度的字的數量。

Set count to 0 
Set t to 0 
for(int i=0;i<given_phrase.length();i++) 
{ 
if(given_phrase[i]==' ') 
{ 
    count[t]++; 
    t=0; 
} 
else 
{ 
    t++; 
} 
} 

對於C,只需檢查'\ 0'是否爲短語結束。 然後您可以顯示基於計數的結果。

+0

是的,你明白了! – Aravind

+0

所以基本上它可以是: '無效的主要(){', 'INT計數[] = {0};' 'INT t = 0時,長度;' 'char數組[30]; ' '字符*令牌;' '長度= strlen的(陣列);' '令牌= strtok的(陣列 「 - 」);' '的for(int i = 0; I <長度; i ++){' 'if(array [i] ==''){' 'count [t] ++;' 't = 0;' '}' 'else' '{' '噸++;' '}' '的printf( 「任何結果」);' '}' – David

+0

@ David:我認爲count數組需要指定一個大小。 – Aravind