我正在尝试使用Pascal创建一个Kakuro,程序应该让Kakuro为空(类似于this)并将其返回完成(类似this)。我已经加载了数据(从文件中)并传递给一个2d数组。
我发现的问题与对角划分的方块有关,我不知道如何用Pascal控制台打印这个分区和每个边的数字。
我尝试使用Pascal图形库,但是alghoritm应该在几台具有不同编译器的计算机上运行,并且Pascal没有统一库,只有crt而且没有帮助(或者我找不到它)。
我也尝试使用ASCII这样的东西,用--
和'|`创建网格但是当我用两位数字打印变形所有输出时,代码是这样的:
for c := 1 to maxc do
begin
for f := 1 to maxf do
begin
WriteLn('+---+');
WriteLn('|\',tablero[v,f,c],'|');
WriteLn('| \ |');
WriteLn('|', tablero[h,f,c], ' \|');
WriteLn('+---+');
end;
WriteLn();
end;
输出中的问题你可以看到:
+---+
|\-1|
| \ |
|23 \|
+---+
+---+
|\0|
| \ |
|0 \|
+---+
我想在我的2d数组中创建另一个2d数组,但如果我这样做,我会得到类似的结果:
+---+
| |
|---|
| |
+---+
除以一半,并且需要对角线完成,所以也不能很好地工作。
答案 0 :(得分:2)
对整数值使用MinWidth说明符。
WriteLn(intValue:2); // displays the number with a width of 2
对于浮点值,您还可以为小数位数添加一个值:
WriteLn(floatVal:5:2);
您可以在System.Write
中找到说明符的文档 - 它是Delphi文档,但Delphi很久以前就已经在Turbo Pascal中出现了,Write/WriteLn
是传统的Pascal函数,并且没有改变。
写参数的格式为:
OutExpr [:MinWidth [:DecPlaces]]
其中OutExpr是输出表达式。
MinWidth和DecPlaces是类型整数表达式:
MinWidth指定最小字段宽度,必须大于0.写入正确的MinWidth字符(必要时使用前导空格),除非OutExpr的值必须以超过MinWidth字符表示。在这种情况下,会写入足够的字符来表示OutExpr的值。同样,如果省略MinWidth,则会写入必要的字符数来表示OutExpr的值。
DecPlaces指定其中一种Real类型的定点表示中的小数位数。仅当OutExpr是Real类型之一并且还指定了MinWidth时,才能指定它。指定MinWidth时,它必须大于或等于0.
以下是一个快速示例:
NT = 12;
NB = -1;
WriteLn('+---+');
WriteLn('|\', NT:2, '|');
WriteLn('| \ |');
WriteLn('|', NB:2, '\|');
WriteLn('+---+');
ReadLn;
这会产生
+---+
|\12|
| \ |
|-1\|
+---+
如果你需要的输出超过两个,你需要放大你的盒子:
+-----+
|\ 120|
| \ |
| \ |
| \ |
|123 \|
+-----+