2013-02-02 2 views
0

문자 수/숫자 수에 대한 해답을 얻으려고합니다 ... 단어 계산에 문제가 있습니다.함수를 사용하여 문자 및 단어 찾기

int num_of_letters_words() 
{ 
    int numberOfLetters = 0; 
    int numberOfWords = 0; 
    int userInput; 
    int answer; 
    printf("please enter your input:\n"); 
    while ((userInput = getchar()) != EOF) 
    { 
     if (ispunct(userInput)) 
      continue; 

     else if(userInput == '\n') 
      continue; 

     else if (userInput == ' ') 
      continue; 

     else if (iscntrl(userInput)) 
      continue; 

     else if (userInput == ' ') 
      ; 
     else 
      numberOfLetters++; 

     if (userInput == ' ' || userInput == '\n' || userInput == '\t') 
      numberOfWords++; 
    } 
    answer = numberOfLetters/numberOfWords; 
    return answer; 
} 
: 여기에 실제로

난 단지

내 기능입니다 .. 새로운 단어가 공백, 탭은 줄 바꿈으로 존재하는 경우,하지만 작동하지 않습니다 아직 선언

함수의 끝에서만 카운터라는 단어를 볼 수 있습니다 ... 여기서 무엇이 잘못 되었습니까?

답변

3

continue 루프가 다음 반복으로 계속 진행하게되면 다음 반복을 건너 뜁니다.

의는 "단어"구분자 (공백, 탭 등) 다음 문자의 순서로 정의 될 것이라고 가정 해 봅시다, 다음 루프는 다음과 같이 수 :

while ((c = getchar()) != EOF) 
{ 
    if (c == ' ' || c == '\t' || c == '\n' || etc.) 
    { 
     if (letterCountThisWord > 0) 
      wordCount++; 
     letterCountThisWord = 0; 
     continue; 
    } 
    letterCount++; 
    letterCountThisWord++; 
} 

if (letterCountThisWord > 0) 
    wordCount++; 

당신이하지 않은 경우 응용 프로그램에서 무슨 일이 벌어지고 있는지에 관해서는 멋진 디버깅 도구를 제공하는 훌륭한 IDE가 많이 있습니다. 코드를 단계별로 검토하고 변수가 어떻게 변했는지 관찰하고 코드를 실제로 이해할 수 있습니다.

한 가지 더 조언하십시오. 테이블 (병, 꽃 등)에 무언가를 올려 놓고 그것이 교수님 또는 상사라고 상상해보고 코드 작동 방식을 자세히 설명해보십시오. 코드의 일부분이 실제로 어떤 일을하고 있는지에 대해 전혀 알지 못한다는 사실을 깨닫게 될 것입니다. 그러면 Google은 답변을 찾아야합니다 (Google, 책 등).

행운을 빕니다 :)

+0

덕분에 무리 : @LihO – MNY

+0

@Nir : 천만에요. 우리 모두는 어떻게 든 시작했다 :) – LihO

+0

빠른 질문 - 왜 당신이 쓴 블록은 단어로 제어 문자를 계산하지 않으며 그것을 wordCount에 추가합니까? 그것이 어떻게 생겼는지는 "만약 당신이 그 중 하나를 보았고, wordCount를 증가시키고, 버퍼의 다음 문자를 확인하려고하면 ... 그리고 물론 나는 그것과 그 일을 체크했다. 그래서 만약 내가 프로그램을 실행하고 그냥하면 공백이나 줄 바꿈이 0을 반환하지만 줄 바꿈을하는 것으로 보입니다. 내가 여기에 놓친 것을 나에게 설명해 주시겠습니까? :) @LihO – MNY