«ADA.FLOAT_IO» не является предопределенной библиотечной единицей

#ada

#ada

Вопрос:

Почему я получаю эту ошибку?

«ADA.FLOAT_IO» не является предопределенной библиотечной единицей

Я никогда раньше ничего не писал в ADA, просто я понятия не имею, что я делаю. Я использую GNAT для компиляции.

 with Ada.Text_IO; use Ada.Text_IO;
with Ada.Float_IO; use Ada.Float_IO;
with Ada.Numerics.Elementary_Functions;
use Ada.Numerics.Elementary_Functions;

procedure MAIN is
   A,B,C:Float;
   W : Float;
   Re, Im:Float;
begin
   Put("Give A");Get(A);
   Put("Give B");Get(B);
   Put("Give C");Get(C);New_Line;
   if A=0.0 then
      Put_Line("It is not second degree polynomial");
   else
      W:=B*B - 4.0*A*C;
      Re:=B/(2.0*A); Im:=Sqrt(Abs(W))/(2.0*A);
      Put("dif = "); Put(W);New_Line;
      if W<0.0 then
         Put_Line("Complex ");
         Put("x1 = ");Put(-Re);Put(" -j ");Put(Im);Put(" ");
         Put("x2 = ");Put(-Re);Put("  j ");Put(Im);New_Line;
      else
         Put_Line("Real");
         Put("x1 = ");Put(-Re-Im);Put(" ");
         Put("x2 = ");Put(-Re Im);
      end if;
   end if;
end MAIN;
  

Ответ №1:

IIRC Float_IO является дочерним элементом Text_IO : Ada.Text_IO.Float_IO . Кроме того, это универсальный пакет. Я думаю, вы хотите Ada.Float_Text_IO , который определяется как

 package Ada.Float_Text_IO is new Ada.Text_IO.Float_IO (Float);
  

Комментарии:

1. ОК. Два вопроса. Где я должен записать это в свой код? Что именно происходит в этой строке?

2. Для вашего второго вопроса см. Статью Wikibook о дженериках . Для первого компилятор предоставляет Ada.Float_Text_IO ( ARM A10.9(32) ), поэтому все, что вам нужно сделать, это заменить Ada.Float_IO на Ada.Float_Text_IO .