Добрый день.
Программированием начал заниматься недавно (причем по учебе). учусь в универе на программиста, и мне нужно написать курсовую на Паскале. А у меня ничего не получается, так что, если Вам не тяжело, то помогите чем сможете - мне всего 1 прогу нужно накатать.
Задание такое:
Разработать программу "Выравнивание". Исходная информация: текст,
записанный в текстовом файле. Программа выводит этот текст с
выравниванием по краям. Тескт выводится без переносов слов. Параметры
абзаца задаются в диалоговом режиме.
Заранее очень благодарен !
Ну спасибо. Прога работает нормально. Но есть недостаток, причем довольно существенный. В условии сказано, что текст выводится без переносов. А эта прога разрывает слова. Если есть возможность, подскажите как исправить.
можно так сделать, но это сложнее, надо не просто переносить каретку после набегания счетчика, но смотреть чтобы пробел был!
А вот как это сделать ? Со сложностью проблем нет - я как нибудь разберусь.
А как убрать переносы - не знаю. Я так понимаю, что в цикле нужно сделать проверку последнего символа, и если он окажется буквой, то что с ним делать?
Ведь нужно будеть растянуть строку по ширине, а значит между словами вставить дополнительные пробелы.
Так, а как правилно, так (выводим строки длинной 18):
фыфпвап вапф варыа (в этой строке 18 сиволов, не считая скобку)
аврвар ыварваор врывар
ывар ырыпарыва ывр
ыавп варвар варвар
И добавить пробелы между словами, или надо так (выводим по 18, если не умещаеться, то все слово переносим):
фыфпвап вапф варыа
аврвар ыварваор
врывар ывар
ырыпарыва ывр ыавп
варвар варвар
а потом добавляем пробелы между словами.
----
Это принципиально важно.
В первом случае мы после набегания счетчика строки переводим каретку после конца слова.
(т.е. к коду надо добавить проверку конца слова, это не сложно)
А во втором случае, надо каким-то образом узнавать уместится ли слово на строке или его уже надо переносить.
----
2 способ значительно сложнее, но более правильный (как мне кажется).
Мне честно говоря, больше нравится естественно второй способ, но мне от этого легче не становится.
А если попробовать так – ширина экрана равна 80 символов (т.е. макс. длина строки тоже 80). Пользователь задаёт отступ справа (напр. 3 символа), и длину строки (напр. 76 символов). И если длина первой строки файла превышает 76, то тогда нужно сделать проверку на перенос. Проверку можно сделать так: берем последний (76-й) символ в строке, и если это пробел, то идем дальше, а сели это буква, то перебираем все символы с конца до тех пор, пока не найдем пробел. Найденный пробел делаем последним символом строки, а расстояние между этим пробелом и последней буквой в строке равномерно (по возможности) распределяем между остальными пробелами в строке (но так, чтобы этот найденный пробел был последним символом и не выводился на экран).
На словах вроде не особливо сложно, но написать я попрошу все-таки Вас (если можно).
Буду премного благодарен за оказанное содействие.
Ибо сам я не особый гений прграммирования (может просто опыта маловато)
Добавлено (30.04.04 14:10):
Нужно довольно срочненько !!!
Добавлено (8.05.04 10:16):
Про меня что, все забыли совсем? Это же курсовая. Обратиться мне больше не к кому. Неужели не поможете ?
6 минут работы, и вот результат... Вроде то, если что не так - пиши
Вот пишу. Ибо что-то не то. У меня программа почему-то выводит только часть текстового файла, а не весь. Во-вторых, я может недоговорил насчет условия.
Понимаете, нужно чтобы текст выравнивался по ширине, как в Word, то есть
никаких разрывов слов, а между словами доставить пробелы так, чтобы последним символом в строке была буква или запятая или еще что но целиком.
Программа нужна обязательно в течение недели.
Спасибо тем кто ответил хотя бы за сочувствие...
Я за выходные попробую дописать ту, что сначала писал.
Не стоит отчаиваться.
Очень надеюсь, а то столько проблем с этим пограммированием.
Ну неуч я, неуч...Что же я могу сделать. Тяжело мне дается эта наука.
Высчитать сколько не хватает пробелов. И более-менее равномерно распределить между словами.
Может, если нужно вставлять СЛИШКОМ много пробелов между словами, то вставлять их между буквами?
Предлагаю свой вариант решения. По моему работает правильнее чем предыдущие. Последний вариант, предложенный Oleg_Z некоторые слова из текста выводит по 2 раза, почему я так и не понял. мой вариант меньше и работает нормально. К нему осталось добавить разделение лишних пробелов между остальными в строке.
Собственно идея следующая:
Предложение: Dos Navigator лучшая оболочка в мире.
Всего имеем 5 пробелов, вставить нужно 20. Дык вот и пляшем от левого края, вставляя по пробелу на каждое пустое место. Вставили первые 5 пробелов, возвращаемся к первому и т.д. Смотрится довольно сносно..
ну вроде смотрится нормально...