E
E
Ecl1pse5442021-02-04 21:01:45
Pascal
Ecl1pse544, 2021-02-04 21:01:45

Hello, can you help me improve the Pascal code?

Error executing procedure: Object reference does not point to an instance of an object.

procedure vstavka(var list: ukaz;n:integer;fioo,godd,poll,sost,det,okll:string);
var p: ukaz; i:integer;
fiooo,goddd,polll,sostt,dett,oklll:string;
begin
temp:=left;
list:=temp;
p:=list;
n:=0;
i:=1;
if (temp<>nil) and (temp^.next<>nil) then
begin

Writeln('Введите элементы которые нужно вставить');
writeln('Введите ФИО студента');
readln(fioo);
writeln('Введите год рождения студента');
readln(godd);
writeln('Введите пол студента');
readln(poll);
writeln('Введите cемейное состояние студента');
readln(sost);
writeln('Введите кол-во детей студента');
readln(det);
writeln('Введите оклад студента');
readln(okll);
p^.inf.fio:=fioo;
p^.inf.god:=godd;
p^.inf.pol:=poll;
p^.inf.semsost:=sost;
p^.inf.koldet:=det;
p^.inf.okl:=okll;
temp := list;
list := nil;
while temp<>nil do
begin
n:=n+1;
writeln(i,')',temp^.inf.fio,' | ',temp^.inf.god,' | ',temp^.inf.pol,' | ',temp^.inf.semsost,' | ',temp^.inf.koldet,' | ',temp^.inf.okl);
if i=2 then
begin
temp^.inf := p^.inf;
p^.next := temp^.next;
temp:= p^.next;
end;
list^.next:=temp^.next;
list^.inf := temp^.inf;
temp:=temp^.next;
i:=i+1;
end;
end;
list := temp;
end;


Here is the full program
Program Spisok;
type
zap=record
fio:string[15];
god:string[15];
pol:string[15];

semsost:string[15];
koldet:string[15];
okl:string[15];
end;
ukaz=^element;
element=record
inf:zap;
next:ukaz;
end;

var newE,left,right,temp,p,list:ukaz;
z:zap;
fioo,godd,poll,sost,det,okll:string;
number,n:integer;


procedure org;
begin
writeln('Выполняется процедура организации очереди');
writeln('Для выхода из процедуры введите символ: *');
writeln('Введите ФИО студента');
readln(z.fio);
writeln('Введите год рождения студента');
readln(z.god);
writeln('Введите пол студента');
readln(z.pol);
writeln('Введите cемейное состояние студента');
readln(z.semsost);
writeln('Введите кол-во детей студента');
readln(z.koldet);
writeln('Введите оклад студента');
readln(z.okl);
if z.fio='*' then exit;
new(newE);
newE^.inf.fio:=z.fio;
newE^.inf.god:=z.god;
newE^.inf.pol:=z.pol;
newE^.inf.semsost:=z.semsost;
newE^.inf.koldet:=z.koldet;
newE^.inf.okl:=z.okl;
newE^.next:=nil;
left:=newE;
right:=newE;
while true do
begin
writeln('Введите ФИО студента');
readln(z.fio);
writeln('Введите год рождения студента');
readln(z.god);
writeln('Введите пол студента');
readln(z.pol);
writeln('Введите cемейное состояние студента');
readln(z.semsost);
writeln('Введите кол-во детей студента');
readln(z.koldet);
writeln('Введите оклад студента');
readln(z.okl);
if z.fio='*' then exit;
new(newE);
newE^.inf.fio:=z.fio;
newE^.inf.god:=z.god;
newE^.inf.pol:=z.pol;
newE^.inf.semsost:=z.semsost;
newE^.inf.koldet:=z.koldet;
newE^.inf.okl:=z.okl;
newE^.next:=left;
left:=newE;
end;
end;


procedure dob;
begin
writeln('Введите ФИО студента');
readln(z.fio);
writeln('Введите год рождения студента');
readln(z.god);
writeln('Введите пол студента');
readln(z.pol);
writeln('Введите cемейное состояние студента');
readln(z.semsost);
writeln('Введите кол-во детей студента');
readln(z.koldet);
writeln('Введите оклад студента');
readln(z.okl);
if z.fio='*' then exit;
new(newE);
newE^.inf.fio:=z.fio;
newE^.inf.god:=z.god;
newE^.inf.pol:=z.pol;
newE^.inf.semsost:=z.semsost;
newE^.inf.koldet:=z.koldet;
newE^.inf.okl:=z.okl;
newE^.next:=nil;
right:=newE;
end;


procedure udal;
begin
writeln('Исключение главного элемента очереди');
writeln('Нажмите клавишу Enter');
readln;
temp:=left^.next;
dispose(left);
left:=temp;
end;


procedure prosmotr(n:integer;fioo,godd,poll,sost,det,okll:string);
var i:integer;
begin
writeln('Очередь содержит следующие элементы');
temp:=left;
n:=0;
i:=1;
while temp<>nil do
begin
n:=n+1;
writeln(i,')',temp^.inf.fio,' ',temp^.inf.god,' ',temp^.inf.pol,' ',temp^.inf.semsost,' ',temp^.inf.koldet,' ',temp^.inf.okl);
fioo:=temp^.inf.fio;
godd:=temp^.inf.god;
poll:=temp^.inf.pol;
sost:=temp^.inf.semsost;
det:=temp^.inf.koldet;
okll:=temp^.inf.okl;
temp:=temp^.next;
i:=i+1;
end;
writeln('Нажмите кнопку Enter');
readln;
end;


procedure vstavka(var list: ukaz;n:integer;fioo,godd,poll,sost,det,okll:string);
var p: ukaz; i:integer;
fiooo,goddd,polll,sostt,dett,oklll:string;
begin
temp:=left;
list:=temp;
p:=list;
n:=0;
i:=1;
if (temp<>nil) and (temp^.next<>nil) then
begin

Writeln('Введите элементы которые нужно вставить');
writeln('Введите ФИО студента');
readln(fioo);
writeln('Введите год рождения студента');
readln(godd);
writeln('Введите пол студента');
readln(poll);
writeln('Введите cемейное состояние студента');
readln(sost);
writeln('Введите кол-во детей студента');
readln(det);
writeln('Введите оклад студента');
readln(okll);
p^.inf.fio:=fioo;
p^.inf.god:=godd;
p^.inf.pol:=poll;

p^.inf.semsost:=sost;
p^.inf.koldet:=det;
p^.inf.okl:=okll;
temp := list;
list := nil;
while temp<>nil do
begin
n:=n+1;
writeln(i,')',temp^.inf.fio,' | ',temp^.inf.god,' | ',temp^.inf.pol,' | ',temp^.inf.semsost,' | ',temp^.inf.koldet,' | ',temp^.inf.okl);
if i=2 then
begin
temp^.inf := p^.inf;
p^.next := temp^.next;
temp:= p^.next;
end;
list^.next:=temp^.next;
list^.inf := temp^.inf;
temp:=temp^.next;
i:=i+1;
end;
end;
list := temp;
end;
{--------------------------------------------------------------------}
begin
while true do
begin
writeln('1-Организация очереди');
writeln('2-Добавление элемента в очередь');
writeln('3-Удаление элемента из очереди');
writeln('4-Просмотр очереди');
writeln('5-Вставить элемент в начало списка ');
writeln('6-Выход');
writeln('------------------');
writeln('Введите номер пункта меню');
readln(number);
case number of
1: org;
2: dob;
3: udal;
4: prosmotr(n,fioo,godd,poll,sost,det,okll);
5: vstavka(list,n,fioo,godd,poll,sost,det,okll);
6: exit;
end;
end;
end.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
H
HemulGM, 2021-02-05
@HemulGM

At what point do you have an error? Can you explain? What are you doing before it occurs?
And the code must be enclosed in the CODE tag.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question