Lua сделать красивый вывод результата (таблицы) в консоль
Я делаю вывод таблицы с результатом в консоль. Если значение ячеек длинное, то получается плохо (все сдвигается). Хочется, чтобы значения оставались под заголовками и структура таблицы сохранялась при любых значениях в ячейках.
os.setlocale("");
function printtab(ltab)
print("----------------------------------------")
for i = 1, #ltab do
for j = 1, #ltab[i] do
io.write(ltab[i][j]) io.write "\t"
end
io.write "\n"
end
print("----------------------------------------")
end
ltab = {{"B", "cB", "x1", "x2", "vK"},
{"x3", -2, 1, -2, ""},
{"x4", -4, -1, -1, ""},
{"x5", 2, 1, -1, ""},
{"x6", 6, 0, 1, ""},
{"F", 0, -1, -2, ""}}
printtab(ltab)
ltab[2][2] = 4/3
ltab[5][5] = 1/3
printtab(ltab)
Как сделать красивый вывод моего результата? Заранее спасибо.
Ответы (1 шт):
Автор решения: Mike V.
→ Ссылка
Надо использовать разные возможности string.format(), для ограничения количества выводимых символов после запятой ("%.3f") и для вывода строки определенной длины ("%8s").
Например, так:
local function fmt(s)
if s then return string.format("%.3f",s) else return ''
end
end
local function printtab(ltab)
print("----------------------------------------")
for i = 1, #ltab do
for j = 1, #ltab[i] do
io.write( string.format("%8s", ltab[i][j]) )
--io.write(ltab[i][j])
--io.write "\t"
end
io.write "\n"
end
print("----------------------------------------")
end
ltab = {{"B", "cB", "x1", "x2", "vK"},
{"x3", -2, 1, -2, ""},
{"x4", -4, -1, -1, ""},
{"x5", 2, 1, -1, ""},
{"x6", 6, 0, 1, ""},
{"F", 0, -1, -2, ""}}
printtab(ltab)
ltab[2][2] = fmt(4/3)
ltab[5][5] = fmt(1/3)
printtab(ltab)
вывод будет таким:
B cB x1 x2 vK
x3 -2 1 -2
x4 -4 -1 -1
x5 2 1 -1
x6 6 0 1
F 0 -1 -2
B cB x1 x2 vK
x3 1,333 1 -2
x4 -4 -1 -1
x5 2 1 -1
x6 6 0 1 0,333
F 0 -1 -2
