Skip to content

Commit a89eb5b

Browse files
authored
feat/Create simple_list.pas
1 parent 6e7617b commit a89eb5b

1 file changed

Lines changed: 178 additions & 0 deletions

File tree

simple_list.pas

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
Program simple_list;
2+
uses crt;
3+
4+
var pointer:byte;
5+
var list:array[1..5] of string;
6+
var input:string;
7+
8+
function getSortedIndex(input:string; list:array of string; pointer:integer):integer;
9+
var i:integer;
10+
begin
11+
for i := 1 to pointer do
12+
begin
13+
if (list[i] > input) or (i = pointer) then
14+
begin
15+
getSortedIndex := i;
16+
end
17+
end
18+
end;
19+
20+
procedure include(list:array of string; pointer:integer; full:boolean; index_sorted:integer);
21+
var word:string;
22+
var i:integer;
23+
begin
24+
if not full then
25+
begin
26+
write('string: ');
27+
readln(word);
28+
29+
for i := 1 to 5 do
30+
begin
31+
if list[i] = word then
32+
begin
33+
writeln('Element already inserted');
34+
end
35+
end
36+
else
37+
begin
38+
if index_sorted <= pointer - 1 then
39+
begin
40+
list[index_sorted] := word;
41+
pointer := pointer + 1;
42+
end
43+
else
44+
begin
45+
for i := index_sorted to pointer do
46+
begin
47+
list[i + 1] := list[i];
48+
end
49+
50+
list[index_sorted] := word;
51+
end
52+
53+
ClrScr;
54+
writeln(word, ' added to the list');
55+
end
56+
end
57+
else
58+
begin
59+
ClrScr;
60+
writeln('list full');
61+
end
62+
end;
63+
64+
procedure remove(input:string; list:array of string; pointer:integer; empty:boolean);
65+
var i:integer;
66+
begin
67+
if empty = false then
68+
begin
69+
ClrScr;
70+
writeln('Item: ', input, ', removed');
71+
for i := 1 to pointer do
72+
begin
73+
if (list[i] = input) then
74+
begin
75+
for i to pointer - 1 do
76+
begin
77+
list[i] := list[i + 1];
78+
end
79+
end
80+
end
81+
end
82+
else
83+
begin
84+
ClrScr;
85+
writeln('empty list');
86+
end
87+
end;
88+
89+
procedure consult(input:string; list:array of string; pointer:integer; empty:boolean);
90+
var i:integer;
91+
begin
92+
if (empty = false) then
93+
begin
94+
for i := 1 to pointer - 1 do
95+
begin
96+
if (list[i] = input) then
97+
begin
98+
writeln('This item: ', input, ', can be found on index: ', i);
99+
end
100+
end
101+
end
102+
else
103+
begin
104+
ClrScr;
105+
writeln('empty list');
106+
end
107+
end;
108+
109+
procedure _write(list:array of string; pointer:integer);
110+
var i:integer;
111+
begin
112+
ClrScr;
113+
114+
for i := 1 to pointer - 1 do
115+
begin
116+
write(list[i], '|');
117+
end
118+
end;
119+
120+
function full(list:array of string; pointer:integer):boolean;
121+
begin
122+
if (pointer > length(list)) then
123+
begin
124+
full := true;
125+
end
126+
else
127+
begin
128+
full := false;
129+
end
130+
end;
131+
132+
function empty(pointer:integer):boolean;
133+
begin
134+
if (pointer <= 1) then
135+
begin
136+
empty := true;
137+
end
138+
else
139+
begin
140+
empty := false;
141+
end
142+
end;
143+
144+
procedure menu();
145+
Begin
146+
writeln;
147+
writeln('*====================*');
148+
writeln('* Choose an action *');
149+
writeln('*1 - include *');
150+
writeln('*2 - remove *');
151+
writeln('*3 - consult *');
152+
writeln('*4 - write *');
153+
writeln('*0 - quit *');
154+
writeln('*====================*');
155+
readln(input);
156+
157+
case input of
158+
1: include(list; pointer; full(list; pointer));
159+
2: remove(list; pointer; empty(pointer));
160+
3: consult(list; empty(pointer));
161+
4: _write(list; pointer);
162+
end;
163+
164+
if (input = 0) then
165+
Begin
166+
writeln('exiting program...')
167+
End;
168+
else
169+
Begin
170+
menu();
171+
End;
172+
End;
173+
174+
Begin
175+
pointer := 1;
176+
177+
menu();
178+
End.

0 commit comments

Comments
 (0)