View difference between Paste ID: RTHvM5zX and UHyCxitm
SHOW: | | - or go back to the newest paste.
1
{ Даны три одномерных массива a, b и c разного размера. Сформировать
2
  массив из элементов, содержащихся в массиве a, но не содержащихсяв массиве b;
3
  массив из элементов, содержащихся в массиве b, но не содержащихсяв массиве c;
4
  массив из элементов, содержащихся в массиве c, но не содержащихся в массиве a.}
5
program Lab12;
6
7
const
8
    nmax = 20;
9
10
type
11
    mas = array [1..nmax] of integer;
12
13
var
14
    a, b, c: mas;
15
    d, e, f: mas;
16
    na, nb, nc, nd, ne, nf, t: integer;
17
    fl: TextFile;
18
19
{ Процедура ввода одномерного массива из файла }
20
procedure Get(var x: mas; var n: integer; var f: TextFile);
21
var
22
    i: integer;
23
begin
24
    readln(f, n);
25
    for i := 1 to n do
26
        read(f, x[i]);
27
    readln(f);
28
end;
29
30
{ Процедура вывода одномерного массива в файл }
31
procedure Put(const x: mas; n: integer; name: string; var f: TextFile);
32
var
33
    i: integer;
34
begin
35
    writeln(f, 'The array ', name, ' of ', n:2, ' elements');
36
    for i := 1 to n do
37
        write(f, x[i]:8);
38
    writeln(f);writeln(f);
39
end;
40
41
{ Процедура поиска "разности" двух массивов }
42
procedure Filter(const x: mas; n: integer; t: integer; var z: mas; var k: integer);
43
var
44
    i: integer;
45
begin
46
    k := 0;
47
    for i := 1 to n do
48
    begin
49
        if abs(x[i]) < t then
50
        begin
51
            k := k + 1;
52
            z[k] := x[i];
53
        end;
54
    end;
55
end;
56
57
begin
58
    { Ввод исходных данных }
59
    if ParamCount < 2 then
60
    begin
61
        writeln('There are no enough parameters');
62
        readln;
63
        exit;
64
    end;
65
    if not FileExists(ParamStr(1)) then
66
    begin
67
        writeln('File ''', ParamStr(1), ''' does not exists');
68
    end;
69
    AssignFile(fl, ParamStr(1));
70
    Reset(fl);
71
    Get(a, na, fl);
72
    Get(b, nb, fl);
73
    Get(c, nc, fl);
74
    CloseFile(fl);
75
    { Поиск "разностей" }
76
    Filter(a, na, b, nb, d, nd);
77
    Filter(b, nb, c, nc, e, ne);
78
    Filter(c, nc, a, na, f, nf);
79
    { Вывод полученных результатов }
80
    AssignFile(fl, ParamStr(2));
81
    Rewrite(fl);
82
    Writ
83
    Put(a, na, 'A', fl);
84
    Put(b, nb, 'B', fl);
85
    Put(c, nc, 'C', fl);
86
    Put(d, nd, 'D (|A| < t)', fl);
87
    Put(e, ne, 'E (|B| < t)', fl);
88
    Put(f, nf, 'F (|C| < t)', fl);
89
    CloseFile(fl);
90
end.