我正在处理一个教堂内的热传递问题,虽然我知道无法得到一个好用的图形用户界面(GUI),但我希望至少能够打印出一些东西,让我能够看到运行代码后的结果。到目前为止,我的输出很难阅读,因为数字过长会推出整个行。我想使用格式化输入/输出(formattedIO),但是文档对我来说很难理解,并且似乎更专注于单行格式化而不是与表格相关的任何内容。我希望有一种方法可以确保所有列都对齐。如果我的代码有帮助的话,请提供一下,谢谢!
use Math;
use Time;
var rows = 10;
var cols = 10;
var times = 4;
var x = 5;
var y = 5;
var temps: [0..rows+1, 0..cols+1] real = 0;
var past: [0..rows+1, 0..cols+1] real;
temps[x,y] = 100;
past[x,y] = 100;
var t: Timer;
t.start();
for t in 1..times do {
forall i in 1..rows do {
for j in 1..cols do {
temps[i,j] = floor((past[i-1,j]+past[i+1,j]+past[i,j-1]+past[i,j+1])/4);
//floor was used to cut off extra decimals in an attempt to make the display better
}
}
past = temps;
}
t.stop();
writeln(t.elapsed());
writeln(temps);
通常网格要大得多(1000×1000),但我把它缩小了,这样我就可以看到这些值。我真的很希望找到一种方法,以使更大的网格可以以不那么糟糕的方式打印出来。也许需要使用文件输出来处理更大的网格尺寸吗?