2013-11-25 2 views
-1

문장을 찾아 (한 줄에 몇 단어로 묶어서) 프로그램을 작성하려고합니다. 예를 들면 다음과 같습니다.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 :("); 
    } 

내가 SATZ을 비교하려면 [내가] SATZ [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

관련 문제