C++ полное выравнивание текста

Я пытаюсь сделать программу, которая полностью выравнивает / выравнивает по левому и правому краям заданную строку. Я уже сделал часть, где вы знаете, сколько пробелов должно быть между словами в строке, но я не понимаю, как добавить или вставить эти пробелы между словами.


person user3377176    schedule 04.03.2014    source источник
comment
Это вопрос об алгоритме определения точки вставки пробелов или о конкретных деталях того, как добавить эти пробелы в нужное место?   -  person David Rodríguez - dribeas    schedule 05.03.2014
comment
Пожалуйста, сформулируйте вопрос более конкретно. Какие-либо предложения? очень широк и может быть закрытым.   -  person Adrian McCarthy    schedule 05.03.2014


Ответы (3)


Вы могли

подсчитайте, сколько слов в каждой строке

делим количество пробелов на количество слов, теперь мы знаем сколько пробелов в среднем нужно добавить к каждому слову

для каждого слова в строке слово += [количество пробелов]

person SparkyRobinson    schedule 04.03.2014

Простой алгоритм для распространения:

for (int i=0; i<num_words-1; i++) {
    int s0 = i * extra_spaces / (num_words - 1);
    int s1 = (i + 1) * extra_spaces / (num_words - 1);
    // add (s1 - s0) spaces between word[i] and word [i+1]
}
person 6502    schedule 04.03.2014

Найдите длину строки - sl

Подсчитайте количество пробелов - n

Вычислить разницу между l и длиной линии - ll

Рассчитайте ширину каждого пробела - w

 w=(ll-sl)/n

Выведите строку по одному слову, продвигаясь вперед на w, если у вас есть пробел.

person Ken Down    schedule 05.02.2018