|
17 / 17 / 1
Регистрация: 19.10.2009
Сообщений: 93
|
|
Линейный список, выравнивание текста по центру08.01.2011, 09:29. Показов 6602. Ответов 28
Метки нет (Все метки)
Доброго времени суток. Задача- написать программу реализующую выравнивание текста по центру. ширина строки, имя входного и выходного файлов задаются пользователем с командной строки. Слова, которые превышают по длине заданную ширину строки, должны переносится на следующую строку. абзацы отделяются пустрй строкой. вроде все.
Так вот вопрос, как мне это реализовать? я не могу придумать алгоритм, что за чем делать. Прошу помощи Добавлено через 13 минут И какой список лучше использовать: односвязный или двусвязный
0
|
|
| 08.01.2011, 09:29 | |
|
Ответы с готовыми решениями:
28
Выравнивание текста по центру Выравнивание текста по центру |
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 08.01.2011, 09:31 | |
|
Эээ... А это два разных вопроса или один? Потому как связные списки и выравнивание текста у вас ну никак между собой не вяжутся, даже в вопросе, не то что в логике...
0
|
|
|
17 / 17 / 1
Регистрация: 19.10.2009
Сообщений: 93
|
||
| 08.01.2011, 09:34 [ТС] | ||
|
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 08.01.2011, 09:35 | |
|
Я бы юзал двусвязный, хотя может вполне хватить и односвязного.
0
|
|
|
17 / 17 / 1
Регистрация: 19.10.2009
Сообщений: 93
|
||
| 08.01.2011, 09:37 [ТС] | ||
|
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 08.01.2011, 09:41 | |
|
Ну а что, в принципе ничего сложного. Первым делом, считаем длину одной строки (не всего введённого текста, а одной его строки, до знака переноса строки). Если она короче ширины строки - просто добавляем перед первым и после последнего слова одинаковое число пробелов, пока длина получаемой строки не станет равна ширине строки. Если же длина этой строки больше ширины строки, идём назад по словам, пока не встретим слово, на котором длина от начала строки до конца этого слова не станет меньше ширины, разбиваем строку на две, одна из которых оканчивается найденным словом, а вторая начинается следующим после него, и к этим двум строкам применяем уже описанный алгоритм выравнивания по центру.
1
|
|
|
17 / 17 / 1
Регистрация: 19.10.2009
Сообщений: 93
|
|
| 08.01.2011, 09:47 [ТС] | |
|
допустим длина строки больше ширины. строка разделена на две. одна записана, вторая записана. куда мне писать строку, которую я считываю из файла следующей? на новую строку? + мне нужно делать частичный перенос слов=(
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|||||||||||
| 08.01.2011, 10:07 | |||||||||||
|
Гамбит, а вы считывайте весь файл целиком. У вас будет список, скажем так, лексем, где лексема - это слово или конец строки. Тогда текст
Добавлено через 2 минуты Ну или если очень хочется, можно и построчно читать. Тогда да, следующую строку, разумеется, писать в файл на новую строку. Про частичный перенос слов (если имеется ввиду по слогам) в задании не увидел, только про полный перенос.
0
|
|||||||||||
|
17 / 17 / 1
Регистрация: 19.10.2009
Сообщений: 93
|
|||||||
| 08.01.2011, 14:09 [ТС] | |||||||
|
Добавлено через 2 часа 54 минуты
0
|
|||||||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 08.01.2011, 14:14 | |
|
В 28 строку после if уберите точку с запятой.
0
|
|
|
17 / 17 / 1
Регистрация: 19.10.2009
Сообщений: 93
|
||
| 08.01.2011, 14:20 [ТС] | ||
|
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||||||
| 08.01.2011, 14:23 | ||||||
|
В 26 строку уберите & - имя массива является указателем на его начало.
К тому же, перевод строки будет склеен с последним слово в этой строке, т.е. так
0
|
||||||
|
17 / 17 / 1
Регистрация: 19.10.2009
Сообщений: 93
|
|||||||
| 08.01.2011, 14:46 [ТС] | |||||||
ну и то что начение параметра k не используется=( Добавлено через 16 минут и ещё не правильно считается длина строки=( текст из 2 строк с кол-вом символов 149. он показывает 1 строку в которой 131 символ=( (хотя он же наверно пробелы игнорирует)
0
|
|||||||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 08.01.2011, 14:46 | |
|
Гамбит, вы символ со строкой сравниваете. Пишите '\n', а не "\n"
0
|
|
|
17 / 17 / 1
Регистрация: 19.10.2009
Сообщений: 93
|
||
| 08.01.2011, 14:55 [ТС] | ||
|
if(p->word[k-1]=='\n') при условии, что к длина слова. все равно 1 строку находит=(
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||||||
| 08.01.2011, 16:19 | ||||||
|
Балин, что-то быдлокодерски вышло. Но работает. Это только чтение и распихивание по списку слов.
0
|
||||||
|
17 / 17 / 1
Регистрация: 19.10.2009
Сообщений: 93
|
|
| 08.01.2011, 16:53 [ТС] | |
|
о мой моцк....сама функция считывания и распихивания у меня работает. у меня не работает подсчет строк и длин строк
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 08.01.2011, 17:02 | |
|
Гамбит, потому что у вас это самое "считывание и распихивание" неверно реализовано. У вас всё интерпретируется как одна строка, поскольку в файле нету разделения на строки. Поэтому приходится считывать посимвольно. Чем и занимается изрядная часть моей функции. Остальная часть - по сути то же, что и у вас. В мой код добавить подсчёт строк труда не составит.
0
|
|
|
17 / 17 / 1
Регистрация: 19.10.2009
Сообщений: 93
|
|
| 08.01.2011, 17:54 [ТС] | |
|
слишком много кода=( мне это в жизн не объяснить преподу
тоесть нужно посимвольно считывать? просто в задании написано, что Перемещение строк производится целиком...
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 08.01.2011, 18:03 | |
|
Гамбит, ну и что? Перемещение - целиком. А обрабатывать-то их как-то надо. Вот и обрабатываем, как можем, а чтобы удовлетворять заданию, т.е. вообще разбить набор входных символов на строки - приходится читать посимвольно.
1
|
|
| 08.01.2011, 18:03 | |
|
Помогаю со студенческими работами здесь
20
Выравнивание текста по центру экрана Выравнивание текста по центру MessageBox
Выравнивание текста по центру, Word Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|