Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Выравнивание строк разной длины по центру


Автор: hapock 2.12.2014, 19:33
Доброго вечера. 

Есть 3 строки которые расположены по центру экрана, но начинаются с четко заданной позиции (одной и той же по оси Y)
Задачка такова, что нужно заполнить определенным количеством пробелов слева, чтобы все строки (учитывая их длину) были по центру.

Пример строк:

Код
This is string 1 text so long
This is string 2 short
This very short


Т.е. они так и располагаются на экране
А нужно сделать чтобы они в зависимости от своей длины выглядели вот так в результате:
Код
This is string 1 text so long
    This is string 2 short
        This very short


На языке С.

Спасибо!

Автор: baldina 2.12.2014, 20:11
1. выясняете длины строк (функция strlen), определяете самую длинную
2. для каждой строки 
  2-1. вычисляете разницу её длины с самой длинной
  2-2. эту разницу делите пополам
  2-3. дополняете строку слева пробелами числом равным половине разницы.
     2-3-1. определяете новый размер строки
     2-3-2. создаете новую строку нужного размера (malloc)
     2-3-3. записываете в неё нужное число пробелов
     2-3-4. копируете в хвост дополняемую строку (strcpy или strcat)

если место под строки зарезервировано достаточно для хранения самой длинной, то 2-3-2. не выполнять, работать с исходной строкой, а 2-3-3 и 2-3-4 поменять местами.

не будет получаться - пишите, показывая ваш код. 
     

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)