Ю12.2

Текст, сформированный построчно, выровнять по правому краю так, чтобы каждая строка заканчивалась знаком препинания или одним пробелом. Выравнивание осуществить, вставляя дополнительные пробелы между словами(равномерно по всей строке).

Текст
There are many big and small libraries everywhere in our country.
They have millions of books in different languages.
Every school has a library.
Pupils come to the library to take books on different subjects.
Результат

Код программы:

По условию задачи необходимо сформированный построчно текст выровнять по правому краю, равномерно вставляя дополнительные пробелы между словами.

Алгоритм:

Описываем и считываем строки. Затем описываем количество пробелов в строке и длину самой длинной строки (относительно которой и будет производится выравнивание по правому краю).

При проходе строк создаем счётчик для подсчета пробелов. Создаем строку и вводим в нее форматированный вариант представления строки на которую указывает указатель i, потом убираем ведущий пробел. Увеличиваем счетчик каждый раз когда встречаем пробел.  Убираем ведущий пробел.

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

Затем второй проход строк.

Резервируем длину строки, так как она сейчас будет изменяться, а нам нужно при вычислениях учитывать исходные данные. Проходим все символы строки и если это пробел (конечно же, не учитывая заключающий пробел), то вставляем нужное количество пробелов между строк (так чтобы их было равное количество).

Смещаем  указатель проходящий все символы в строке. Теперь оставшиеся пробелы вставляем в начало чтобы выровнять строку по правому краю.

Для проверки работы программы можно воспользоваться объектом.

 

Related Images: