linux - 空整数数组变量输出为零,有些输出为空。如此迷茫

标签 linux multidimensional-array ada

我正在编写一个 Ada 程序来解决数独谜题。现在我只是想让数组正确填充和输出。我接受这样的文本文档:

4 5 7 89 
  2 5 6  
  79  542
  35 6489
   3 8   
 6847 91 
 238  59 
 79 3 2 1
1  6  7 3

空格是空方 block 。 数组声明:

Sudoku_Array : array (1..9, 1..9) of Integer;

下面是为数组赋值的代码。 Is_Char_Number 检查字符是否为 0-9,ConverttoNum 将 Char 转换为整数。该数组在空格所在的位置应该只有一个空值。

Open(File, In_File, Argument(1));
while not End_Of_File(File) loop
    for R in 1..9 loop
        for C in 1..9 loop
            Get(File, Char);
            if Is_Char_Number(Char) then
                Sudoku_Array(R,C) := ConverttoNum(Char);
            end if;
        end loop;
    end loop;
end loop;

所以,如果我输入上面未完成的数独谜题,我会得到这个(宽度为 2):

 4 0 5 0 732630 8 9-1620489328
326304196088 2 0 56846 6 0 0
-161330220832630 7 91163006750 0 5 4 2
32767-1613303064 3 532630 6 4 8 9
 1 1 0 3 1 8-161330306432630 0
 0 6 8 4 7-1613314008 9 1 1
 0 2 3 8-161330220832630 5 9-1623044096
32630 7 94198472 31264732688 2-1615461819 1
 1 0 6 6-162053872032630 732630 3

我假设疯狂的数字是空数组实例,但其中一些以零出现,就好像它们被设置为整数 0 一样。

那么,有没有办法将整数数组值正确设置为空? 还有,有没有办法更好地在屏幕上显示结果?显示一个空格而不是一个疯狂的数字。

谢谢

编辑:谢谢大家,我可能以错误的方式来解决这个问题。我想我可以将其设置为零,而不是尝试将空格设置为空数组值。因为数独中没有零,所以无论如何都必须更改它们。多谢你们!非常感谢。

最佳答案

两种简单的方法:选择一种。

1) 初始化数组:

Sudoku_Array : array (1..9, 1..9) of Integer := (others => (others => 0));

这可能看起来很奇怪,但是 (others => 0) 将一维数组中的每个元素都设置为 0,而另一个 others => 子句就是这样做的对于每一行。

2) 在 else 子句中添加默认操作。

if Is_Char_Number(Char) then
   Sudoku_Array(R,C) := ConverttoNum(Char);
else 
   Sudoku_Array(R,C) := 0;
end if;

我认为这里的初始化更整洁,但两种方式都有其用途。

关于linux - 空整数数组变量输出为零,有些输出为空。如此迷茫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14966215/

相关文章:

llvm - 无法制作 gnat-llvm : Ada. Strings.Text_Output”不是预定义的库单元

arrays - 谁能告诉我 ada 中 Real_Matrix 的精度

c - 发送数据包(PCAP、WLAN、C)给接收方,无连接接收

linux - 从另一个自动键脚本运行一个自动键脚本?

检查 pthread_mutex 是否初始化

java - 在数组中搜索字符串

php - 使用 PHPExcel 数组到 Excel 2007

linux - 在 yocto 上安装 python-twisted

c++ - 对二维字符数组的行求和

opencv - 如何为 GNAT 绑定(bind)到 OpenCV?