Commit | Line | Data |
---|---|---|
81e70d48 PH |
1 | PROGRAM WORTE(INPUT, OUTPUT); |
2 | CONST N = 101; M = 11; | |
3 | TYPE ALFA = ARRAY[1..10] OF CHAR; | |
4 | VAR I,J,K: INTEGER; | |
5 | Z: CHAR; | |
6 | WORT: ALFA; | |
7 | A: ARRAY[1..N] OF ALFA; | |
8 | H: ARRAY[1..N] OF INTEGER; | |
9 | ||
10 | FUNCTION EQUAL(VAR X,Y: ALFA): BOOLEAN; | |
11 | VAR K: INTEGER; | |
12 | BEGIN K:=0; | |
13 | REPEAT K:=K+1 UNTIL (X[K]<>Y[K]) OR (K=10); | |
14 | EQUAL := (X[K]=Y[K]) AND (K=10) | |
15 | END; | |
16 | ||
17 | FUNCTION INDEX(X:ALFA): INTEGER; | |
18 | VAR I,Q,Z: INTEGER; | |
19 | BEGIN Z:= 0; | |
20 | FOR I := 1 TO 10 DO Z := Z + ORD(X[I]); | |
21 | I := Z MOD N + 1; Q := Z MOD M + 1; | |
22 | WHILE NOT EQUAL(A[I],X) AND (H[I] <> 0) DO I := (I+Q) MOD N + 1; | |
23 | INDEX := I | |
24 | END; | |
25 | ||
26 | BEGIN | |
27 | FOR I := 1 TO N DO H[I] := 0; | |
28 | REPEAT FOR J:=1 TO 10 DO WORT[J]:=" "; J := 0; | |
29 | REPEAT READ(Z); | |
30 | UNTIL (Z>="A") AND (Z<="Z") OR EOLN; | |
31 | IF NOT EOLN | |
32 | THEN BEGIN | |
33 | REPEAT J := J+1; IF J<=10 THEN WORT[J] := Z; | |
34 | READ(Z) | |
35 | UNTIL NOT ((Z>="A") AND (Z<="Z")); | |
36 | I := INDEX(WORT); | |
37 | A[I] := WORT; H[I] := H[I] + 1 | |
38 | END | |
39 | UNTIL EOF; | |
40 | J := 0; | |
41 | FOR I := 1 TO N DO | |
42 | IF H[I] <> 0 | |
43 | THEN BEGIN FOR K:=1 TO 10 DO WRITE(A[I,K]); | |
44 | WRITE(H[I]:3," ":5); | |
45 | J := J+1; | |
46 | IF J >=4 THEN BEGIN J := 0; WRITELN END | |
47 | END | |
48 | END. |