gpt4 book ai didi

file - Ada:在 block 语句中写入文件

转载 作者:行者123 更新时间:2023-12-01 04:43:51 25 4
gpt4 key购买 nike

我正在处理一个数组,其长度是在程序执行期间确定的。所以我正在使用 block我可以在其中设置数组限制的语句。

我在将数组元素写入文件时遇到问题 因为我在写过程中使用了 stub .我删除了 stub 以将所有内容都放在相同的代码中。虽然现在我的代码编译并运行,但它没有写入文件。这是代码:

with Ada.Float_Text_IO;
with Ada.Integer_Text_IO;
with Ada.Text_IO;


procedure Compute_Parameters is

Spin_Speed, Whirling_Speed : Float;
Time_Step, Rotor_Revolutions : Float;
Number_Of_Steps : Float;


begin
Ada.Text_IO.Put("Enter the spin speed ");
Ada.Float_Text_IO.Get (Item => Spin_Speed);
Ada.Text_IO.New_Line (1);
Ada.Text_IO.Put("Enter the whirling speed ");
Ada.Float_Text_IO.Get (Item => Whirling_Speed);
Ada.Text_IO.New_Line (1);
Ada.Text_IO.Put("Enter the time step ");
Ada.Float_Text_IO.Get (Item => Time_Step);
Ada.Text_IO.New_Line (1);
Ada.Text_IO.Put("Enter the number of revolutions of the rotor ");
Ada.Float_Text_IO.Get (Item => Rotor_Revolutions);


Number_Of_Steps := (360.0 / (Time_Step * Whirling_Speed)) * Rotor_Revolutions * (Whirling_Speed / Spin_Speed);


declare

type Vector is array (Integer range <>) of Float;
Time_Vector : Vector (1 .. Integer (Float'Truncation (Number_Of_Steps)) + 1);
Rotor_Position_Degrees : Vector (1 .. Integer (Float'Truncation (Number_Of_Steps)) + 1);

Count : Integer := 0;
Start : Float := 0.0;
Step : Float := Time_Step;

Output_Data_File : File_Type;

procedure Write_Files (Output_File : File_Type;
Out_1 : Integer;
Out_2 : Float;
Prec : Natural := 5
) is
begin
Ada.Integer_Text_IO.Put (File => Output_File, Item => Out_1);
Ada.Text_IO.Put (Output_File, " ");
Ada.Float_Text_IO.Put (File => Output_File, Item => Out_2, Fore => 6, Aft => Prec, Exp => 0);
Ada.Text_IO.New_Line (Output_File);
end Write_Files;



begin -- begin of Declare

Ada.Text_IO.Put ("Put file name to write: ");
Create (Output_Data_File, Out_File, Get_Line);


for I in 1 .. Time_Vector'Length loop
Count := Count + 1;
Time_Vector(I) := Start + Step * Float(I-1);
Put (Integer'Image(Count));
Ada.Text_IO.Put(" ");
Rotor_Position_Degrees(I) := Spin_Speed * Time_Step * Float(I-1);
Ada.Float_Text_IO.Put (Item => Rotor_Position_Degrees(I), Fore => 5, Aft => 1, Exp => 0);
Ada.Text_IO.New_Line(1);

--write to file
Write_Files (Output_Data_File,
Out_1 => Count,
Out_2 => Rotor_Position_Degrees(I)
);
end loop;

close(Output_Data_File);


end; -- end of Declare


end Compute_Parameters;

我注意到 begin 后面的 2 行在 Declare根本没有被执行:
Ada.Text_IO.Put ("Put file name to write: ");
Create (Output_Data_File, Out_File, Get_Line);

我究竟做错了什么?

谢谢...

最佳答案

在最后一次之后按回车 GetRotor_Revolutions在标准输入中留下了一个空行,有待阅读:

 Ada.Text_IO.Put_Line (Ada.Text_IO.Get_Line);
Ada.Text_IO.Put ("Put file name to write: ");
Create (Output_Data_File, Out_File, Ada.Text_IO.Get_Line);

澄清一下:这是 Get_Line这是必需的; Put_Line只是为了表明它是一个空行。

或者,使用 Ada.Command_Line ,如图所示 example .

关于file - Ada:在 block 语句中写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10470664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com