Доброго времени суток. Прошу помощи вот с такой задачкой:
Даны линейные списки А и В, состоящие из целых чисел. Описать процедуру, которая проверяет, входит ли список А в список В.
Delphi |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
| program p1;
{$APPTYPE CONSOLE}
uses SysUtils,Math;
type ss = ^list;
list = record
inf : integer;
next : ss;
end;
Var u,p,q:array[1..2] of ss;
m1,m2:array[1..255] of integer;
F : Boolean;
n1,n2,j:byte;
Procedure Form(x,r:byte);
Var i : integer;
Begin
New(u[x]);
u[x]^.next := nil;
p[x]:=u[x];
for i:=1 to r do
begin
new(p[x]^.next);
p[x] := p[x]^.next;
p[x]^.next := nil;
read( p[x]^.inf);
end;
End;
Procedure Output(x:byte);
Var I : Word;
Begin
I := 0;
p[x]:=u[x]^.next;
While p[x]<>nil do
Begin
Inc(I);
WriteLn(I:2,' ',p[x]^.inf);
p[x] := p[x]^.next;
End;
End;
Function ListIn(l1,l2:byte):boolean;
var i,h:byte;
b:boolean;
begin
i:=0;
p[l1]:=u[l1]^.next;
While p[l1]<>nil do
Begin
Inc(I);
m1[i]:=p[l1]^.inf;
p[l1] := p[l1]^.next;
End;
i:=0;
p[l2]:=u[l2]^.next;
While p[l2]<>nil do
Begin
Inc(I);
m2[i]:=p[l2]^.inf;
p[l2] := p[l2]^.next;
End;
result:=false;
for i:=1 to l1 do
for h:=1 to l2 do
begin
if m[i]...
end;
{q[1] := u[1];
p[1] := u[1]^.next;
q[2] := u[2];
p[2]:= u[2]^.next;
Result := True;
while ((p[l1] <> nil)) do
begin
if (p[l1]^.inf <> p[l2]^.inf) then Result:=false;
q[1] := q[1]^.next;
p[1]:= p[1]^.next;
q[2] := q[2]^.next;
p[2]:= p[2]^.next;
end;}
Begin
{for j:=1 to 255 do begin m1[i]:=9999; m2[i]:=9999; end;}
Write('Input size of list A');
read(n1);
Form(1,n1);
Write('Input size of list B');
read(n2);
Form(2,n2);
WriteLn('List A');
WriteLn;
Output(1);
WriteLn('List B');
Output(2);
if n1<n2 then
begin
if ListIn(1,2) then Write('List B include list A')
else Write('List B not include list A')
end else
begin
if ListIn(2,1) then Write('List A include list B')
else Write('List A not include list B')
end;
//write(m1[2],' ',m2[2]);
readln; readln;
End. |
|
Вот мои неудачные попытки. То что в комментариях - работало, но он проверял как-то по первому значению и всё. Так же думал на счёт множества и совсем не туда заехал... Знаю, что на Си легко, но задание нужно именно на Делфи. Помогите, кто может. Очень буду благодарен.