2013-02-21 2 views
2

현재 워드 카운팅 프로그램을 사용 중입니다. 그리고 난 운동이 힘들어.
나는이 운동이 내가 원하는 것을 정확히 이해할 수 없다. 여기 C 프로그래밍 K & R 연습 문제 1-11

문자로 시작 예를 들어, 운동 자체
개정의 더 나은 정의를 사용하는 단어 계산 프로그램 "단어를", 문자, 숫자 및 아포스트로피의 순서

내가 무엇을 얻을 캔트 그것은 실제로 원합니다. 그것은 제가 기호 숫자 아포스트로피 또는 에테르를 계산하기를 원하기 때문에 "단어"와 같은 모든 기호 기호의 이름을 넣기를 원합니다 - A(") word comma(,) A(") 또는 그 밖의 것이 있습니다.

이 선, 문자, 새로운 라인

#include <stdio.h> 

#define YES 1 
#define NO 0 

main() 
{ 
    // CTRL+Z will Signal to EOF-End of File 
    int c,nl,nw,nc,inword; //nl -new line 
          //nw -new word 
          //nc -new chatacter 
          //inword -program in word or not 

    inword=NO; 
    nl=nw=nc=0; 
    while ((c=getchar()) !=EOF) 
    { 
     ++nc; 
     if (c == '\n') 
      ++nl; 
     if (c == ' ' || c == '\t' || c == '\n') 
      inword=NO; 
     else if (inword==NO) 
     { 
      inword=YES; 
      ++nw; 
     } 
    } 
    printf("%d %d %d\n", nl,nw,nc); 

    getchar(); 
} 

를 계산 프로그램은 너희들이 실제로 운동은 내가 무엇을 원하는 나에게 설명 할 수있다? 이미 완전한 코드가 필요하지 않습니다. 나 자신을 코딩을 통해 가야겠다. 나는 운동에서 실제로해야 할 것을 얻지 못한다.

+0

당신이 언급 한 단어 집계 프로그램을 보았습니까? – Barmar

+0

이전 운동과 관련하여 단어의 정의를 향상 시키길 원합니다. 예를 들어 사전을 사용하여 실제 단어와 일치 시키거나 3 자 미만의 단어를 무시하거나 숫자가있는 단어를 무시할 수 있습니다. – perreal

+0

아마도 a + b (공백 없음)는 1보다는 2 단어 (또는 문자, 숫자 및 아포스트로피로 구성되지 않기 때문에 0 일 수도 있음)로 간주해야하거나, a + b (공백 포함)을 3 단어가 아닌 2 단어로 사용하십시오. 아포스트로피뿐만 아니라 하이픈에 대해서도 생각해보십시오. –

답변

3

게시 한 프로그램은 공백으로 구분 된 모든 것을 하나의 단어로 취급합니다. 그래서 이것들은 모두 단어입니다 : 12a,b123456[email protected]!#.

단어를 더 잘 정의하여 프로그램을 개선 할 것을 요청하고 "문자로 시작하는 문자, 숫자 및 아포스트로피의 시퀀스"예제를 제공합니다.

John'sa123이있는 단어입니다이 예와 그래서

하지만 12, 1aa-b는 없습니다.

+0

Awsome. 이제 알았어 – AlexGreat

+0

"a-b"는 아마 2 단어 ("후 처리"라야 함)를 분명히하기 위해. – user7116