Мне дали проект в универе, где мне нужно написать ADA-пакет графа. Точки графа хранятся в массиве, ребра хранятся в матрице. (В матрице, если между двумя точками есть ребро, число в этом индексе является весом/длиной ребра)
Необходимы две процедуры: NewPoint и NewEdge.
Необходимы три функции: IsItaPoint, IsitAnEdge и print (матрица и массив).
Я начал изучать ADA неделю назад, и я уверен, что для некоторых из вас это двухминутный код. Я написал это:
Граф.объявления
package Graph is
function IsItAPoint (G: Graph;I: Integer) return Boolean;
function IsItAnEdge (G: Graph;I: Integer; J: Integer ) return Boolean;
procedure NewEdge (G: Graph;I: Integer; J: Integer; S: Integer);
procedure NewPoint(G: Graph;I: Integer);
type PointArray is array(Integer range <>) Of Integer;
type EdgeMatrix is array(Integer range <>,
Integer range <>) of INTEGER;
PointCount: Integer:=0;
end Graph;
График.adb
package body Graph is
procedure NewPoint(G: Graph;I: Integer) is
begin
G.PointCount:=G.PointCount+1;
G.PointArray(G.PointCount):=I;
end;
procedure NewEdge(G: Graph;I: Integer; J: Integer; S: Integer) is
begin
G.EdgeMatrix(I,J):=S;
end;
function IsItAPoint (G: Graph;I: Integer) return Boolean is
begin
for J in 1..100 loop
if (G.PointArray(J)=I) then return True; end if;
end loop;
return False;
end;
function IsItAnEdge (G: Graph;I: Integer; J: Integer ) return Boolean is
begin
return (G.EdgeMatrix(I,J)=Null);
end;
end Graph;
Я получаю сообщение об ошибке «Граф не виден» и «в этом контексте требуется отметка подтипа» в файле adb.
Можете ли вы помочь мне исправить все это дело?
graph,adb
сообщает об ошибке. Я предполагаю, что объявление типа для Graph просто не видно, потому что для этого пакета нет предложения With или Use. - person user_1818839   schedule 31.10.2015Graphs
; тогда вы можете добавить недостающееtype Graph is ...
без путаницы. - person Simon Wright   schedule 31.10.2015