Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
26.01.2014, 23:51
|
|||
---|---|---|---|
|
|||
Редактирование текста |
|||
#18+
Доброго времени суток. Очень надеюсь на вашу помощь. Мне дали задание: "Дан текст, содержащий N строк. Каждая строка заканчивается точкой. Длина строки <= 60. Выровнять строки так, что каждая строка имела длину 60. Строка не должна начинаться и заканчиваться пробелами. Выравнивание строк проводить равномерно вставляя дополнительные пробела в тех местах, где они уже имеются. Вставлять требуемые пробелы в одном месте не допускается." Подскажите, пожалуйста, как нужно написать цикл добавления этих пробелов. Я всю голову сломал, ведь не все строки равны, не во всех одинаковое кол-во символов, да еще слова не одного размера. Слова в массив я записал, а что дальше не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.01.2014, 00:20
|
|||
---|---|---|---|
Редактирование текста |
|||
#18+
Не знаю как записывал слова в массив, но если они уже там: Построчно. Определять суммарную длину слов. (60-суммарная длина слов)/количество пробелов = количество пробелов между словами Идею понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.01.2014, 03:53
|
|||
---|---|---|---|
Редактирование текста |
|||
#18+
LLezarСтрока не должна начинаться и заканчиваться пробелами. Выравнивание строк проводить равномерно вставляя дополнительные пробела в тех местах, где они уже имеются.Тут есть немалое противоречие - а если в строке нет пробелов вообще? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.01.2014, 11:09
|
|||
---|---|---|---|
|
|||
Редактирование текста |
|||
#18+
Я бы вообще работал только со строкой. Находим последний пробел и вставляем после него ещё один, ищем следующий с конца и т.д. по кругу пока строка не станет 60. А если на строке только одно слово или строка уже больше 60 и др. возможные исключения придётся учитывать отдельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.01.2014, 11:19
|
|||
---|---|---|---|
|
|||
Редактирование текста |
|||
#18+
_Дмит_Находим последний пробел и вставляем после него ещё один, ищем следующий с конца и т.д. по кругу пока строка не станет 60.проще написать, но дольше работает. Если задача учебная или разовая или скорость непринципиальна - можно так и сделать. Кстати, перед выполнением выравнивания не помешает удалить двойные пробелы. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.01.2014, 13:04
|
|||
---|---|---|---|
Редактирование текста |
|||
#18+
Быстрее будет сплитануть строку по пробелу, рассчитать, сколько надо пробелов в каждом месте, и сколько выравнивающих, потом джойном собрать обратно и реплейсом с ограничением количества довести до требуемой длины. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.01.2014, 13:06
|
|||
---|---|---|---|
Редактирование текста |
|||
#18+
Так что осталось решить две проблемы. Первая - как сказано выше, что делать, если неть пробелов. Вторая - что делать с символами после точки, буде таковые имеются. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.01.2014, 01:20
|
|||
---|---|---|---|
|
|||
Редактирование текста |
|||
#18+
Ну я думаю, что пробелы есть в любом случае, раз в условии сказано о них. Не думаю, что препод будет к этому придираться. С точкой да, не понятно. Ну даже если считать, что точка это конец строки, я пока тоже не знаю как описать. Ну в голове - то и так понятно было как, но на практике. Допустим я выяснил сколько символов у меня в строке, без пробелов. Это не проблема. Ну допустим 25. То есть 60 - 25 = 35 пробелов мне нужно добавить. Но не получается у меня написать такой цикл, который делает как нужно. Вот к чему я только пришел: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
Но во - первых, это у меня не работает. Вообще зависает как бесконечный цикл, походу я вирус написал. А во - вторых у меня же не одна строка, а N. С этим тоже проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.01.2014, 01:28
|
|||
---|---|---|---|
|
|||
Редактирование текста |
|||
#18+
alex77755, в массив вот так: Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.01.2014, 12:00
|
|||
---|---|---|---|
|
|||
Редактирование текста |
|||
#18+
Если цикл, то думаю так Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.01.2014, 20:07
|
|||
---|---|---|---|
Редактирование текста |
|||
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.01.2014, 23:39
|
|||
---|---|---|---|
|
|||
Редактирование текста |
|||
#18+
_Дмит_, Спасибо большое, очень помогли. Вот код прикрепляю, который у меня получился, на всякий, вдруг кому понадобится: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=60&mobile=1&tid=2156546]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 280ms |
total: | 421ms |
0 / 0 |