Консультация # 197052: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Дали задание, ломал голову, так ничего и не придумал, помогите сделать его: Обязательно должно быть реализовано выполнение следующих функций: ∙ добавления элемента в конец, начало, середину (до и после введенного номера). Добавление данных происходит с клавиатуры; ∙ удаления элемента...Консультация # 197111: Здравствуйте! Прошу помощи в следующем вопросе:Массив из чисел от -20 до 20. Найдите наибольший нечетный элемент и сумму отрицательных элементов массива. в 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.
Здравствуйте! Прошу помощи в следующем вопросе:Массив из чисел от -20 до 20. Найдите наибольший нечетный элемент и сумму отрицательных элементов массива. в pascal
const
n=20;
var
a:array[1..n]of integer;
b,c:integer;
begin
for b:=1 to n do a[b]:=random(41)-20;
for b:=1 to n do write(a[b]:4);
writeln;
c:=1;
while(c<n)and((a[c] and 1)=0)do inc(c);
if c<=n then
begin
for b:=c to n do if odd(a[b])and(a[b]>a[c])then c:=b;
writeln('maximum odd elemtnts:=',a[c]);
end else writeln('no odd elemtnts');
c:=0;
for b:=1 to n do if a[b]<0 then c:=c+a[b];
writeln('summa negative elements:=',c);
end.
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались.
Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора -
для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение.
Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал,
который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом.
Заходите - у нас интересно!