2009-10-07 2 views
2

파스칼에서 특정 문자로 시작하는 텍스트 (사용자 입력)의 단어 수를 감지해야하는 프로그램을 작성해야합니다. 배열을 사용할 수 없습니다. 어디서부터 시작할 지에 대한 힌트를주세요.파스칼 도움말에서 단어 카운터 작성

+0

모두, 문제는 해결 = D였습니다. –

답변

3

어떤 편지인지 알면 카운터를 유지하기 만하면됩니다. 배열이 필요 없습니다.

어떤 편지인지 모르는 경우 26 개의 카운터를 보관하십시오. 바보 같지만 사양대로 작동합니다.

+1

글자를 모르거나 배열을 사용할 수없는 경우 숙제 설정자를 촬영해야합니다. 유럽에 거주하면서 악센트 부호가있는 문자를 처리해야하는 경우가 아니면 26 가지 방법 또는 52 가지 방법으로 설명문을 사용해야하며 증분을 증가시켜야합니다. 그것에 대해 생각하지 않습니다. 등 뒤에서 묶인 한 손으로 사용하지 않고 파스칼을 사용하는 것은 충분히 어렵습니다. –

+0

숙제 세터가 온순한 사람과 약한 사람을 제적하려고하지 않는 한. 어떤 프로그래밍 작업에서는 결국 26 개의 카운터에 해당하는 그릿을 가져야합니다. ( – DVK

1

먼저 할 일은 글자를 구성하는 문자 집합을 정의하거나 반대로 글자를 구성하지 않는 문자 집합을 정의하는 것입니다.

문자를 취하고 해당 문자가 문자인지 여부에 따라 부울 값을 반환하는 함수를 작성하십시오. 그런 다음 문자열을 반복하여 각 문자에 대해 호출합니다. 문자가 아닌 문자 바로 뒤 또는 문자열의 시작 부분에서 문자를 감지하면 대상 문자 인 경우 카운터를 증가시킵니다.

0

일치하는 경우 첫 번째 단어에 공백 문자 개수를 더합니다.

0

(S)는 입력 문자열입니다.

  1. 은 길이 (S)에 1부터 진행 루프를 생성 - 루프 내 1
  2. 체크 인 (S) [I] = ''와 (S) [I + 1] = 't'여기서 i는 루프 카운터이고 't'는 계산하려는 단어를 시작하는 문자입니다.
  3. 2 단계에서 기준이 일치하면 카운터가 증가합니다.

루프 크기에서 1을 빼십시오.

또한 문자열의 맨 앞에있는 문자가 일치하려는 것이고 위에 정의 된 루프에 의해 선택되지 않을 수도 있습니다.

하드 코딩 된 't'가 아닌 특정 문자를 찾을 수 있도록 코드를 더 스마트하게 만들어야하는 경우 루프가있는 함수/프로 시저에 요청 된 문자를 매개 변수로 전달할 수 있습니다.

내 머리 위로 떨어져
-2

은 - 당신이 배열이나 case 문을해야하는 이유

function WordCount(const S: string; const C: Char): Integer; 
const 
    ValidChars: Set of Char [A..Z, a..z]; // Alter for appropriate language 
var 
    i : Integer; 
    t : string; 
begin 
    Result := 0; 
    if Length(S) <> 0 then 
    begin 
    t := Trim(S); // lose and leading and trailing spaces 
    t := t + ' '; // make sure a space is the last char 
    repeat 
     if (t[1] in ValidChars) and (t[1] = C then 
     inc(Result); 
     i := Pos(' ', t); 
     t := Copy(t(i+1, Length(t)); 
    until Length(t) = 0; 
    end; 
end; 

을 테스트하지?

+1

-1 그는 완전한 해결책이 아니라 힌트를 요청했습니다. –

+0

질문자가 질문을했기 때문에 예를 보여줄 수 있다고 생각했습니다. 그는 "어레이 - 생각"을 향해 사용할 수 없다는 말로 질문합니다. – Despatcher