Вот программа:
Uses crt;
Type
T_zap=Record
n_r: byte;
k_r: byte;
end;
T_adress=^T_elem;
T_elem=Record
info:T_zap;
adress: T_adress;
end;
Var first: T_adress; n,m:byte;
matr_incidentnosty:array[1..10,1..10] of byte;
Procedure Input_matr_incidentnosty_i_ee_vyvod;
Var f_input:text; file_name:string;
i,j:byte;
Begin
writeln('Vvedite name of file: ');
readln(file_name);
assign(f_input,file_name);
reset(f_input);
n:=0; m:=0; i:=0;
while not Eof(f_input) do
begin
inc(i); j:=0;
while not Eoln(f_input) do
begin
inc(j);
read(f_input,matr_incidentnosty[i,j]);
end;
readln(f_input);
n:=i; m:=j;
end;
writeln ('Chislo_strok = ',n,'; Chislo_stolb = ',m);
close(f_input);
write('Vershina\Rebro');
for j:=1 to m do
write(' ',j:2);
writeln;
for i:=1 to n do
begin
write(i,' ');
for j:=1 to m do
write (matr_incidentnosty[i,j]:3);
writeln;
end;
End;
Procedure Formir_spiska_reber_grafa_i_ego_vyvod;
Var p_u,t_u:T_adress; i,j,key,k:byte;
Begin
New(t_u); first:=t_u;
for j:=1 to m do
begin
for i:=1 to n do
begin
key:=0;
if matr_incidentnosty[i,j]=1 then
t_u^.info.n_r:=i;
for k:=i+1 to n do
if matr_incidentnosty[k,j]=1 then
begin
t_u^.info.k_r:=k;
key:=1;
break;
end
else if key=0 then
begin
t_u^.info.k_r:=i;
break;
end;
end;
p_u:=t_u;
New(t_u);
p_u^.adress:=t_u;
end;
p_u^.adress:=nil;
readkey;
writeln('Spisok reber grafa');
t_u:=first;
While t_u^.info.n_r<=t_u^.info.k_r do
begin
with t_u^.info do
writeln(n_r,' - ',k_r);
readkey;
t_u:=t_u^.adress;
end
End;
{ Procedure Opredelenie_step_vershin_grafa;
Var stepen:byte; p_u,t_u:T_adress;
Begin
stepen:=0;
p_u:=first;
t_u:=p_u^.adress;
while t_u<>nil do
begin
if p_u=t_u then stepen:=stepen+1;
p_u:=t_u;
t_u:=p_u^.adress;
end
End; }
Begin
clrscr;
Input_matr_incidentnosty_i_ee_vyvod;
Formir_spiska_reber_grafa_i_ego_vyvod;
readkey;
End.
Ошибка в формировании списка ребер. Выдает левые значения! Я грешу на вывод. Кто нибудь посмотрите где ошибка!