1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Если не сложно, проверьте правильность написания программы..., Это не должно занять много времени. Заранее благодарна.
Ориентированный граф задан матрицей инцидентности. По заданной матрице сформировать список окрестностей вершин графа. По сформированному списку окрестностей вершин определить степени захода всех вершин графа и вершину с максимальной степенью захода. Удалить вершину с максимальной степенью захода вместе со смежными ей вершинами из списка окрестностей.
Program EinZweinDrein; Type EU=^Elem; Elem=Record nv:integer; adres:EU; end; Var M:array[1..10,1..20] of integer; Kver,kdur,maxver,imax,kdel:integer; BegSpis,St,Sp:EU; Procedure OpenFileForRead; Var F_in:Text; i,j:integer; Begin Assign(F_in,'Matr.txt'); Reset(F_in); Kver:=0; Kdur:=0; i:=0; While not Eof(F_in) do Begin Inc(i); j:=0; While not Eoln(F_in) do Begin Inc(j); Read(F_in,M[i,j]); End; Readln(F_in); Kdur:=j; End; Kver:=i; End; Procedure VivodMatric; Var i,j:integer; Begin For i:=1 to kver do Begin For j:=1 to kdur do Write(M[i,j]:3); End; End; Procedure Formirovanie; Var i,j,k:integer; Begin New(St); BegSpis:=St; For i:=1 to kver do Begin St^.nv:=-i; Sp:=St; New(St); Sp^.adres:=St; For j:=1 to kdur do If M[i,j]=1 then For k:=1 to kver do If M[k,j]=-1 then St^.nv:=k; End; Sp^.adres:=nil; End; Procedure VivodSpis; Begin St:=BegSpis; While St<>Nil do Begin Write(St^.nv,' '); St:=St^.adres; End; End; Procedure StepZah; Var A:array[1..10] of integer; i:integer; Begin For i:=1 to kver do A[i]:=0; St:=BegSpis; While St<>Nil do Begin If St^.nv>0 then A[st^.nv]:=A[st^.nv]+1; St:=St^.adres; End; Writeln('Stepeni zahoda'); For i:=1 to kver do Writeln(i,' ',A[i]); Maxver:=A[1]; Imax:=1; For i:=2 to kdur do If Maxver<A[i] then Begin Maxver:=A[i]; Imax:=i; End; Maxver:=Imax; Writeln('Maxver=',Maxver); End; Procedure DeleteElem; Var K:array[1..10] of integer; i:integer; Begin St:=BegSpis; Kdel:=0; While St<>Nil do Begin If St^.nv=-maxver then Kdel:=Kdel+1; K[kdel]:=maxver; St:=St^.adres; If (St<>Nil) and (st^.nv>0) then Begin K[kdel]:=St^.nv; St:=St^.adres; End; Break; End; For i:=1 to kdel do Begin St:=BegSpis; While St<>Nil do Begin If St^.nv=-K[i] then Begin If St=BegSpis then BegSpis:=St^.adres Else Begin Sp^.adres:=St^.adres; St:=Sp; End; St:=St^.adres; While (St<>Nil) and (St^.nv>0) do Begin If St=BegSpis then BegSpis:=St^.adres Else Begin Sp^.adres:=St^.adres; Sp:=St; End; Sp:=St; St:=St^.adres; End; End Else if Sp^.adres=St^.adres then Begin Sp^.adres:=St^.adres; St:=Sp; End; Sp:=St; St:=St^.adres; End; End; End; Begin OpenFileForRead; VivodMatric; Formirovanie; VivodSpis; StepZah; DeleteElem; VivodSpis; End.
М
Просьба использовать тэги кода при публикации программного текста. Lapp
Shymoda, погоди... Что твоя программа делает вообще? Ты ее хотя бы запускала? Она ж у тебя вылетает при выполнении DeleteElem. А выводит вообще непонятно что. Ну, допустим, единственное, что она делает правильно - это вводит исходную матрицу инцидентности (если добавить Writeln куда нужно). Вот лог работы твоей программы с произвольной матрицей инцидентности (нарисовал граф "с потолка" и заполнил значения матрицы):
И что здесь означает этот список? Что значат полученные степени захода? Это надо понимать так, что ни одна вершина вообще в графе не присутствует? С чего тогда вывод о том, что максимальная степень захода именно у седьмой вершины? В представленном графе, кстати, вершин с макс. степенью захода сразу три: №4, №5 и №6, а седьмой вершины в графе нет совсем...
Дальше: Почему ты все пишешь в один список окрестностей? Список окрестностей, если я не ошибаюсь, строится для каждой вершины отдельно...