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