Математика необходима для смещения столбцов? - PullRequest
0 голосов
/ 30 марта 2019

У меня есть проект, в котором мне нужно распечатать содержимое каталога в лексикографическом порядке с переменным количеством столбцов, зависящим от текущей ширины окна терминала, и содержимое будет напечатано вертикально с одинаковыми по длине столбцами.

Большая часть основной идеи выполнена, в основном я просто разделил ширину окна терминала на произвольное число, которое я установил для допустимой длины столбца (в данном случае 22, так что количество имен файлов, печатаемых на строку, всегдаwindow_width / 22, поэтому, например, если window_width равно 88, 88/22 равно 4, поэтому в каждой строке будет максимум 4 имени файла, количество пробелов - это разница между длиной имени файла и 22).

Я разобрался со всеми лексикографическими материалами, и печать файлов из каталога уже завершена, сейчас я просто борюсь с выяснением математики, которую мне нужно использовать, чтобы распечатать все по вертикали.Я пытался записать некоторые идеи, но я все еще застрял и не знаю, как начать.Я попытался обойти некоторые идеи кода, но все они заканчиваются ошибкой сегментации (без сомнения, из-за попытки найти способ смещения массива, как я объясню ниже) или просто распечатывать файлы непреднамереннообразом.

Так, например, если мой каталог имеет

f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13 

, то он должен распечатать что-то вроде этого:

f1  f5  f8  f11
f2  f6  f9  f12
f3  f7  f10 f13
f4

Я знаю, что как только я распечатываюСтрока, я не могу вернуться к ней, поэтому я должен найти способ напечатать f1 f5 f8 f11 сразу, и то же самое до конца.

Все имена файлов хранятся вмассив, так что я думал как-то сместить его, например, rowWidth (который в данном случае равен 4), i = 0, arr [i + rowWidth * 0] равно f1, arr [i + rowWidth * 1] равно f5, нотогда arr [i + rowWidth * 2] должно быть f8, то есть в первом столбце расстояние между первым и вторым элементами равно 4 (что связано с высотой столбца 1), но в любом другом столбце это расстояниетолько 3 (потому что все столбцы после 1 имеют высоту 3).

Я думаю, что это как-то связано с делением длины столбца и ширины окна, оставляя остаток, но я не совсем знаю, как определить длину всех столбцов до распечатки и как я могу распределитьсмещение массива правильно.

Я не совсем уверен, как мне справиться с этим, такое ощущение, что эта ситуация требует большого предвидения, поэтому я не хочу вдаваться в подробности, пока у меня нет четкого представления о том, какой метод мне следует использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...