wc.pp 1009 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. { Count Lines/Words/Chars }
  2. program wc;
  3. uses SysUtils;
  4. var
  5. nl, nw, nc: longint;
  6. Buf: array[1..4096] of byte;
  7. NumRead: Integer;
  8. A: Integer;
  9. Tmp: String;
  10. TmpPos : Byte;
  11. Ch: String;
  12. InWord: Boolean;
  13. begin
  14. nl := 0;
  15. nc := 0;
  16. nw := 0;
  17. InWord := False;
  18. NumRead := FileRead(StdInputHandle, Buf, 4096);
  19. While NumRead > 0 Do
  20. begin
  21. Inc(nc, NumRead);
  22. For A := 1 To NumRead Do
  23. begin
  24. if Buf[A] = 10 Then Inc(nl);
  25. if Buf[A] = 13 Then Dec(nc);
  26. if (Buf[A] = 32) Or (Buf[A] = 10) Or (Buf[A] = 13) Or (Buf[A] = 9) Then
  27. InWord := False
  28. else
  29. begin
  30. If InWord = False Then
  31. begin
  32. Inc(nw);
  33. InWord := True;
  34. end;
  35. end;
  36. end;
  37. NumRead := FileRead(StdInputHandle, Buf, 4096);
  38. end;
  39. WriteLn(IntToStr(nl) + ' ' + IntToStr(nw) + ' ' + IntToStr(nc));
  40. end.