Мне был предоставлен проект в uni, где мне нужно написать пакет ADA графика. Точки графика хранятся в массиве, ребра хранятся в матрице. (В матрице, если есть край между двумя точками, число в этом индексе - это вес/длина края)Ada "Требуется отметка подтипа"
необходимы две процедуры: NewPoint и NewEdge.
Эти три функции необходимы IsItaPoint, IsitAnEdge и print (матрица и массив).
Я начал изучать ADA неделю назад, и я уверен, что для вас это 2-минутный код. я писал:
Graph.ads
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;
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;
я получаю "Graf не видимые" и "подтип знак необходимости в этом контексте" ошибка в ADB файл.
Можете ли вы помочь мне исправить все это?
Предположительно, у вас есть тип (или подтип), называемый «Graph», объявленный где-то еще, предположительно в другом пакете, да? Добавьте эту спецификацию пакета в Q. Также, оставив в стороне мудрость повторного использования имени типа для пакета, было бы полезно указать, какая строка в 'graph, adb' сообщает об ошибке. Я предполагаю, что объявление типа для «Графа» просто не видно, потому что для этого пакета нет предложения WITH или Use. –
См. [Этот ответ] (http://stackoverflow.com/a/28557589/40851) для «метки подтипа». Кроме того, я бы рекомендовал вызывать пакет 'Graphs'; то вы можете добавить отсутствующий 'type Graph is ...' без путаницы. –
Скопируйте и вставьте точное сообщение об ошибке в свой вопрос.Я предполагаю, что фактическое сообщение было «График не виден», а не «Граф не видимый». Незначительные орфографические ошибки, подобные этому, могут быть очень значительными. –