2013-11-25 19 views
-1

我正在嘗試編寫一個程序,它尋找palindromes(在單行中的幾個字之間)並寫入它們。例如:C - 從單行給出迴文列表

>Maszka anna rentner forfreakingsake 

    >anna rentner 

但是我確實設法檢查第一個單詞(直到空格),我不知道如何開始檢查下一個單詞。它應該是一些簡單,原始的方式,任何人都可以幫助我嗎? 我有什麼(不要太多):

#include<stdio.h> 
    #include <string.h> 

    #define N 10000 

    int main() 
    { 
    int i,j; 
    char satz[N]; 
    char palindrome[N]; 

    fgets(satz); 

    for(i=0; i != EOF; i++) 
     satz[i] = getchar(); //first filling array with chars 

    } 
    printf("wth :("); 
    } 

我想比較起價[I]與起價[J](J = strlen的(字)-1應該是單詞的最後一個字母),迴文[]應該排列迴文,我可以打印。但是我不知道數組的大小,也不知道單詞的長度,所以我被困在這裏。

+1

請出示你有 –

+1

你至少應該告訴你嘗試過什麼......和複製/粘貼在這裏你的代碼。 – perror

回答

0

我能想到的最簡單的方法是從該字符串中創建一個數組。空間可以是其中的一個分隔符。所以只需解析它並將每個單詞添加到數組中。然後,您可以在該陣列的每個元素上使用您的算法。

+1

數組由空格分隔嗎?請用一個例子進一步解釋,因爲它是不正確的。 – interjay

+0

我不認爲這相當於一個答案。應該可能是一個評論。 – iamnotmaynard

0
#include <stdio.h> 
#include <ctype.h> 

int main(void){ 
    char word[128]; 
    int i=0, ch; 

    putchar('>'); 
    while(EOF != (ch = getchar())){ 
     if(isspace(ch)){ 
      if(i){ 
       int fr, bk; 
       for(fr=0, bk=i-1;word[fr]==word[bk];++fr,--bk); 
       if(fr < bk)//not palindromes 
        i = 0; 
       else { 
        while(i) 
         putchar(word[--i]); 
        putchar(ch); 
       } 
      } 
      if(ch == '\n') 
       break; 
     } else { 
      word[i++] = tolower(ch);//check i < sizeof(word) 
     } 
    } 
    putchar('\n'); 

    return 0; 
} 
+0

它看起來很不錯,效果很好。但是當我在Windows中啓動這個程序時,控制檯在給出答案後立即關閉。我能得到一些建議如何解決這個問題? – user2957781

+0

@ user2957781'getchar();'或'system(「pause」);'在return 0之前寫入''' – BLUEPIXY