空整数数组变量输出为零,有些输出为空.太困惑了



我正在编写一个阿达程序来解决数独难题。现在我只是想让数组正确填充和输出。我收到了一份这样的文本文件:

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

其中空格是空的正方形。数组声明:

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的Put):

 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一样。

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

感谢

编辑:谢谢,伙计们,我可能搞错了。与其尝试将空格设置为null数组值,我想我可以将其设置为零。因为数独中没有零,所以无论如何都必须更改它们。谢谢大家!非常感谢。

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

1) 初始化阵列:

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

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

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

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

我认为这里的初始化比较整洁,但这两种方式都有各自的用途。

我不知道Ada是如何工作的,但你似乎只检查是否有带有的字符

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

那么,如果它是一个char,那么将其转换并放入数组中,如果不是呢?然后你插入一个零,它可以做你想做的事情,我想

相关内容

  • 没有找到相关文章

最新更新