Задачи на обработку текстовой информации, контрольная, по обработке текстовой инфармиции |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Задачи на обработку текстовой информации, контрольная, по обработке текстовой инфармиции |
sarmat |
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Дмитрий Репутация: 0 |
1.Дано натуральное число N (N>9). Определите сумму цифр в первой половине числа.(старшие разряды). пример N=12345678. Сумма =1+2+3+4=10
2. Дана строка символов. Удалить из строки все символы "(" и ")" - круглые скобки 3. Дан текст из N символов. Группы символов, расположенные между пробелами и не содержащие пробелов внутри себя, называем словами. Подсчитать кол-во слов, у которых первый и последний символ совпадают. ЗАРАНЕЕ СПАСИБО! ПС конкретно мне надо как это будет записано в паскале/ |
sheka |
Сообщение
#2
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Cделать конкретно? Не вопрос.
А желание попробовать что-то сделать самому есть??? Давай труды сюды. Сообщение отредактировано: sheka - |
Lapp |
Сообщение
#3
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Просьба не нарушать правила раздела Задачи (п.6, см. выше на этой странице)
ПС конкретно мне надо как это будет записано в паскале/ В Паскале это будет конкретно записано, когда ты конкретно запишешь.. За тебя делать никто не станет. Есть конкретные вопросы - конкретно давай..-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
sarmat |
Сообщение
#4
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Дмитрий Репутация: 0 |
2. после того как я запсал "дано" и определил строку символов. какой командой удалить скобки?
|
Unconnected |
Сообщение
#5
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Ну, если ты о второй задаче - для этого есть оператор delete(строка,позиция_начала_удаления,сколько_
символов_удалять). И чтобы ею воспользоваться, бежишь в цикле по строке (типа for i:=1 to length(s) do ) и сравниваешь каждый символ со скобками, если попалась скобка - delete её.. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
Сообщение
#6
|
Гость |
Цитата сравниваешь каждый символ со скобками, если попалась скобка - delete её.. и в какой-то момент осознаешь, что когда скобку удалил, длина строки уменьшилась, а Length(s) уже выполнился в самом начале цикла, и ты, оказывается, уже бежишь снаружи от строки, и что-то там удаляешь... Поэтому надо сделать... Что? |
Unconnected |
Сообщение
#7
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Точняк, извиняюсь.. сам когда-то долго вылавливал такую фигню) Перед циклом надо длину строки в переменную занести, и её использовать конечным параметром в цикле.
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
Сообщение
#8
|
Гость |
Цитата Перед циклом надо длину строки в переменную занести, и её использовать конечным параметром в цикле. Вот как раз этого делать не надо, это за тебя делает Паскаль. И именно в этом случае происходит то, что я описал (ну, вот так устроен цикл For в Паскале, что начальное и конечное значение вычисляются один раз, а не на каждой итерации. В отличии от С, скажем). И если ты сам вынесешь длину строки в новую переменную, то ничего нового не произойдет. Так что надо сделать, чтоб не бегать за границей строки? |
Unconnected |
Сообщение
#9
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Цитата ну, вот так устроен цикл For в Паскале, что начальное и конечное значение вычисляются один раз, а не на каждой итерации Ой.. *полез в свои программы, которые живут с этим..* Ну, тогда ввести переменную, скажем L, цикл такой: for i:=1 to length(s)-l, а в теле цикла при каждом удалении inc(l);.. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Client |
Сообщение
#10
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
ну что все for да for while/repeat тут гораздо проще использовать |
volvo |
Сообщение
#11
|
Гость |
Ребята, а подумать не пробовали? For бывает не только вперед, а и назад тоже.
Цитата while/repeat тут гораздо проще использовать Так что тут проще использовать, правильный For или While/Repeat? |
Client |
Сообщение
#12
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
for назад - хорошая идея перебирая с конца, если нашел скобку, то просто удалил и все, не надо волноваться о длине строки.
|
sarmat |
Сообщение
#13
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Дмитрий Репутация: 0 |
блин, я не понимаю ка кмне определить из этой строки скобки
|
TarasBer |
Сообщение
#14
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
> блин, я не понимаю ка кмне определить из этой строки скобки
if (S[i] = '(') or (S[i] = ')') then ... Продвинутый вариант, рекомендуется, если вы проходили такие конструкции: const chrBrackets = ['(', ')']; ... if S[i] in chrBrackets then ... -------------------- |
Текстовая версия | 6.05.2024 9:51 |