File 使用Ada读写文件(解析数据进行处理)

File 使用Ada读写文件(解析数据进行处理),file,ada,File,Ada,对于那些了解Ada编程的人来说,什么是将文件中的数据引入该程序以便在该算法中使用的好方法 使用Ada,我试图找出如何从文件中读取一系列矩阵连接数据网格,然后解析数据,保留字段名以备以后输出,同时在算法中使用0和1 理想情况下,输入数据将如下所示(行和列的数量将有所不同,并且输入文件中将有多个具有不同行和列名的数据集(矩阵) 示例:(忽略下划线) ________名称1\u名称2\u名称3\u名称 名称1\uuuuuuuu0\uuuuuu1\uuuuuuuuu0\uuuuuu0 名称2\uuuuu

对于那些了解Ada编程的人来说,什么是将文件中的数据引入该程序以便在该算法中使用的好方法

使用Ada,我试图找出如何从文件中读取一系列矩阵连接数据网格,然后解析数据,保留字段名以备以后输出,同时在算法中使用0和1

理想情况下,输入数据将如下所示(行和列的数量将有所不同,并且输入文件中将有多个具有不同行和列名的数据集(矩阵)

示例:(忽略下划线)

________名称1\u名称2\u名称3\u名称

名称1\uuuuuuuu0\uuuuuu1\uuuuuuuuu0\uuuuuu0

名称2\uuuuuuuuu0\uuuuu0\uuuuuuuu1\uuuuuuuu1

名称3\uuuuuuu0\uuuu0\uuuuuu1\uuuuuu0

名称(0)(1)(0)(0)(0)(0)

这里是我到目前为止没有从文件读取和输出到文件实现的代码

WITH Text_IO; USE Text_IO;      -- This gets the IO facility. 
WITH Ada.Integer_Text_IO; USE Ada.Integer_Text_IO; -- This gets the integer IO facility. 
--**** 
-- use zero elements in array to store size 0,0 and row/column names? 


-- read size 
-- use size to read names of columns 
-- store in array 


-- use size to read first row of data? 
-- as data is read convert from 0/1 to true false and store? 

-- if value read = 0 => array2d(n,n) = false 
-- if value read = 1 => array2d(n,n) = true 


-- * main procedure * 
PROCEDURE BooleanTest IS              -- Main, but no special name is needed.BEGIN 

   N : Integer := 4; -- max size ** to be read 
   OutputConvertion : Integer; 
   Array2d: ARRAY (1..N, 1..N) OF boolean; 

-- * main procedure starts begins* 
BEGIN 
   -- read array size and column names 

   -- hard coded to be read from file 

   Array2d(1, 1) := false; 
   Array2d(1, 2) := false; 
   Array2d(1, 3) := false; 
   Array2d(1, 4) := false; 

   Array2d(2, 1) := false; 
   Array2d(2, 2) := true; 
   Array2d(2, 3) := false; 
   Array2d(2, 4) := true; 

   Array2d(3, 1) := false; 
   Array2d(3, 2) := true; 
   Array2d(3, 3) := false; 
   Array2d(3, 4) := true; 

   Array2d(4, 1) := true; 
   Array2d(4, 2) := false; 
   Array2d(4, 3) := true; 
   Array2d(4, 4) := false; 

   FOR I IN 1..N LOOP 
      FOR J IN 1..N LOOP 
         IF Array2d(J,I) = true THEN --true nodes connected 
            FOR K IN 1..N LOOP 
               Array2d(J,K) := Array2d(J,K) OR Array2d(I,K); 
            END LOOP; 
         END IF; 
      END LOOP; 
   END LOOP; 

-- *********** output to screen ************ 

   FOR I IN 1..N LOOP 
      FOR J IN 1..N LOOP 
         IF Array2d(I,J) = True THEN 
            OutputConvertion := 1; 
         ELSE 
            OutputConvertion := 0; 
         END IF; 
         Put( OutputConvertion); 
         Put(" ");                 
      END LOOP; 
      New_Line(1); 
   END LOOP; 


END BooleanTest; 
-- * main procedure ends * 

我不知道你的问题是什么,但我感到有些困惑,不仅是I/O,还有约束数组与非约束数组、布尔值的表示,以及可能的二进制I/O与文本I/O的使用。如果你有行和列的标签,它们是随机分配的,还是行概念上固定的值,可以枚举在您的程序中执行,如以下示例:

类型名称为(名称1、名称2、名称3、名称4、名称5、名称6); 类型矩阵是布尔值的数组(名称范围、名称范围)

True和False的正确文本值为True和False,而不是1和0。
考虑读取和写入流文件的可能性,这将大大简化矩阵类型的实例的I/O,它可能具有不同的大小。< / P>每个矩阵的行和列的名称是固定的(至少有5个矩阵)。目标是读取第一行解析名称并将其存储以供以后使用。下一步转到下一行解析数据(可以忽略行名称)并存储解析后的数据(0和1)在2d数组中。数据是字符串是可以的。如果需要,可以在存储后进行数据转换。通过算法运行数据,并以与输入类似的格式输出。我将查看“流文件”。请编辑问题本身,以使您更清楚地问到什么。这个问题也可以提取出来,(对于那些了解Ada编程的人来说)什么是将文件中的数据引入该程序的好方法,以便可以在该算法中使用。