Консультация № 197052
12.11.2019, 14:25
0.00 руб.
0 3 1
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Дали задание, ломал голову, так ничего и не придумал, помогите сделать его:
Обязательно должно быть реализовано выполнение следующих функций:
• добавления элемента в конец, начало, середину (до и после введенного номера). Добавление данных происходит с клавиатуры;
• удаления элемента из начала, середины, конца;
• очистка списка;
• задания конкретного варианта (поиск по заданным полям).
Для решения задач обязательно использовать функции. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.
Задание:
Счет в банке представляет собой структуру с полями: номер счета, код счета, фамилия владельца, сумма на счете, дата открытия счета, годовой процент начисления. Реализовать поиск по номеру счета владельца.




Приложение:
PascalABC

Обсуждение

давно
Старший Модератор
31795
6196
17.11.2019, 00:06
общий
Адресаты:
Цитата: Satana666
Дали задание, ломал голову, так ничего и не придумал, помогите сделать его

Вот костяк:
[code lang=pascal]type
tAccount=record
name:tStr;
number:tStr;
kod:tStr;
summa:real;
create:tStr;
percent:real;
end;
plist=^tList;
tList=record
Info:tAccount;
next:pList;
end;
procedure Showlist(a:pList);
begin
writeln('Show All List:');
writeln('End List');
end;
procedure Add2List(var a:pList);
begin
end;
procedure FreeList(var a:pList);
begin
end;
procedure FreeItem(a:pList);
begin
end;
procedure SaveList(a:pList);
begin
end;
procedure LoadList(var a:pList);
begin
end;
procedure FindItem(a:plist);
begin
end;
var
a:pList;
c:char;
begin
a:=nil;
repeat
write(#10,#10,#10,'Bank',#10,
'1 - add to list',#10,
'2 - free item',#10,
'3 - show list',#10,
'4 - free list',#10,
'5 - find items',#10,
'6 - save to file',#10,
'7 - load from file',#10,
'0 - exit',#10,'please select:');
readln(c);
if c in ['0'..'7']then
case c of
'0':if a<>nil then FreeList(a);
'1':Add2List(a);
'2':FreeItem(a);
'3':ShowList(a);
'4':FreeList(a);
'5':FindItem(a);
'6':SaveList(a);
'7':LoadList(a);
end;
until c='0';
end.[/code]
Доделывайте.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
19.11.2019, 16:12
общий
это ответ
Здравствуйте, Satana666!

Смотрите код:
[code lang=pascal]const
n=20;
type
tStr=string[n];
tAccount=record
name:tStr;
number:tStr;
kod:tStr;
summa:real;
create:tStr;
percent:real;
end;
plist=^tList;
tList=record
Info:tAccount;
next:pList;
end;
function EnterData(a:string):string;
begin
write('Enter ',a,':');
readln(a);
EnterData:=a;
end;
procedure Showlist(a:pList);
var
b:longint;
begin
writeln('Show All List:');
b:=1;
while a<>nil do
begin
writeln(b,' ':3,a^.info.name,' ':3,a^.info.number,' ':3,a^.info.kod);
a:=a^.next;
inc(b);
end;
writeln('End List');
end;
procedure Add2List(var a:pList);
var
b:integer;
d,e:pList;
begin
d:=a;
new(e);
e^.info.name:=EnterData('user name');
e^.info.number:=EnterData('account number');
e^.info.kod:=EnterData('account type');
e^.next:=nil;
b:=StrToInt(EnterData('position[0-first..n-after]'));
if(d=nil)or(b=0)then
begin
e^.next:=a;
a:=e;
end
else
begin
dec(b);
while(b>0)and(d^.next<>nil)and(d<>nil)do
begin
d:=d^.next;
dec(b);
end;
if b=0 then
begin
e^.next:=d^.next;
d^.next:=e;
end
else d^.next:=e;
end;
end;
procedure FreeList(var a:pList);
var
b:pList;
begin
while a<>nil do
begin
b:=a;
a:=a^.next;
dispose(b);
end;
end;
procedure FreeItem(a:pList);
var
b:integer;
c,d:pList;
begin
b:=StrToInt(EnterData('index'));
c:=a;
if b=0 then
begin
a:=a^.next;
dispose(c);
end
else if b=1 then
begin
c:=a^.next;
a^.next:=c^.next;
dispose(c);
end
else
begin
while(b>1)and(c<>nil)do
begin
dec(b);
c:=c^.next;
end;
if b>1 then writeln('record not found')
else
begin
d:=c^.next;
c^.next:=d^.next;
dispose(d);
end;
end;
end;
procedure SaveList(a:pList);
var
b:string;
c:file of tAccount;
d:tAccount;
begin
b:=EnterData('file name');
assign(c,b);
rewrite(c);
while a<>nil do
begin
write(c,a^.info);
a:=a^.next;
end;
close(c);
end;
procedure LoadList(var a:pList);
var
b:string;
c:file of tAccount;
d:pList;
begin
b:=EnterData('file name');
if FileExists(b) then
begin
a:=nil;
assign(c,b);
reset(c);
while not EOF(c) do
begin
new(d);
read(c,d^.info);
d^.next:=a;
a:=d;
end;
close(c);
end
else writeln('file ',b,' not found');
end;
procedure FindItem(a:plist);
var
b:tStr;
begin
b:=EnterData('number');
while(a^.next<>nil)or(a^.info.number<>b)do
a:=a^.next;
if a^.info.number=b then
writeln(b,' ':3,a^.info.name,' ':3,a^.info.number,' ':3,a^.info.kod)
else writeln('not found this record');
end;
var
a:pList;
c:char;
begin
a:=nil;
repeat
write(#10,#10,#10,'Bank',#10,
'1 - add to list',#10,
'2 - show list',#10,
'3 - find item',#10,
'4 - free item',#10,
'5 - free list',#10,
'6 - save to file',#10,
'7 - load from file',#10,
'0 - exit',#10,'please select:');
readln(c);
if c in ['0'..'7']then
case c of
'0':if a<>nil then FreeList(a);
'1':Add2list(a);
'2':ShowList(a);
'3':FindItem(a);
'4':FreeItem(a);
'5':FreeList(a);
'6':SaveList(a);
'7':LoadList(a);
end;
until c='0';
end.[/code]
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
19.11.2019, 16:14
общий
Адресаты:
Я делал, только для первых трех полей, остальное добавите сами.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа