замена символа в строке на другой символ, замена символа в строке на другой символ |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
замена символа в строке на другой символ, замена символа в строке на другой символ |
marwell |
17.12.2009 16:22
Сообщение
#1
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
плиз, помогите решить, а то чет не получается В строке символов надо везде, где встречается символ "пробел", заменить его на два "пробела"
|
volvo |
17.12.2009 16:43
Сообщение
#2
|
Гость |
Что не получается? Что пробовал, можно посмотреть? Вообще все должно получаться, если идти от хвоста строки в ее начало (и НЕ циклом for, естественно)
|
Unconnected |
17.12.2009 16:59
Сообщение
#3
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
А если встречается два пробела? Это будет отдельный символ "два пробела" или программа должна обработать каджый?
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
17.12.2009 17:02
Сообщение
#4
|
Гость |
Цитата В строке символов надо везде, где встречается символ "пробел", заменить его на два "пробела" Значит, заменить на 4. Но я настоятельно рекомендую не приводить код до тех пор, пока ТС не покажет свои наработки... |
Lapp |
18.12.2009 3:58
Сообщение
#5
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
идти от хвоста строки в ее начало (и НЕ циклом for, естественно) А чем так плох for в данном случае? Я бы, думаю, именно с ним сделал..-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
andriano |
18.12.2009 10:02
Сообщение
#6
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
А чем так плох for в данном случае? Я бы, думаю, именно с ним сделал.. Я тоже об этом подумал. А еще о том, что не суть важно, перебирать от конца к началу или от начала к концу. Но, несмотря на некоторую излишнюю категоричность утверждения, IMHO именно предложенный вариант самый простой в реализации. В сообщениях volvo некедко явно либо неявно проскальзывает мысль, что предложенный им оптимальный вариант является единственно возможным. И, хотя формально это неверно, с дидактической точки зрения он, возможно, прав - нужно учить писать программы сразу оптимально. PS. А еще неплохо было бы, если бы название темы соответствовало содержанию. Ну нет такого символа "два пробела". Сообщение отредактировано: andriano - 18.12.2009 10:05 |
volvo |
18.12.2009 10:38
Сообщение
#7
|
Гость |
Цитата А чем так плох for в данном случае? Я бы, думаю, именно с ним сделал.. А зачем тебе лишняя головная боль? Как ты собрался без этой самой головной боли заменить в строке (заметь, не переписать в другую строку, заменяя встреченный пробел на два, а именно заменить) один символ на два? Размер строки меняется, а For-у на это наплевать, он на каждой итерации условие окончания не вычисляет... |
andriano |
18.12.2009 11:26
Сообщение
#8
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Размер строки меняется, а For-у на это наплевать, он на каждой итерации условие окончания не вычисляет... И что с того?Все равно нам надо просмотреть именно ТО количество символов, которое было в первоначальной строке, а добавленные - не просмаривать. Т.е. все условия цикла с наперед известным количеством повторений. |
volvo |
18.12.2009 11:39
Сообщение
#9
|
Гость |
Да? Ну, попробуй:
s := 'вот тебе задачка 123';Приведи решение с циклом For, я посмотрю, как, используя информацию об ИЗНАЧАЛЬНОЙ длине строки ты обработаешь последние пробелы... Никаких предварительных пробегов по строке, ибо While-вариант обойдется без этого... Еще раз: НЕ записать в другую строку, а добавить в эту же, по условию... Цитата Все равно нам надо просмотреть именно ТО количество символов, которое было в первоначальной строке, а добавленные - не просмаривать. Ты задание читал внимательно? Нам надо добавлять пробелы не в конец сроки, а в середину... |
Lapp |
18.12.2009 12:04
Сообщение
#10
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Ты задание читал внимательно? Нам надо добавлять пробелы не в конец сроки, а в середину... volvo, я что-то совсем перестал тебя понимать.. Я так туплю? Что тут плохого: var- ? Добавлено через 2 мин. Delete я вставил для большей общности (типа замена на два других символа) -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Unconnected |
18.12.2009 13:15
Сообщение
#11
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Я, кстати, вчера по другой задаче задумывался над этим: цикл for единожды берет начальный параметр или при каждой итерации и потом что-то прибавляет/вычитает? Видимо, единожды, т.к. вариант Lapp'а работает, а там в качестве задания начального значения параметру цикла используется меняющаяся длина строки..
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Lapp |
18.12.2009 13:39
Сообщение
#12
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
цикл for единожды берет начальный параметр или при каждой итерации и потом что-то прибавляет/вычитает? Видимо, единожды, т.к. вариант Lapp'а работает, а там в качестве задания начального значения параметру цикла используется меняющаяся длина строки.. В моем коде это прозрачно - первый параметр вроде как очевидно единожды. Второй - менее очевидно, и вопрос вполне законный. Ответ: да, единожды, в начале. Если переменная, использованная для второго предела изменяется во время исполнения, это никак не влияет на реальные пределы.-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
andriano |
18.12.2009 14:17
Сообщение
#13
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Еще раз: НЕ записать в другую строку, а добавить в эту же, по условию... Два вари анта на выбор:
Ты задание читал внимательно? Нам надо добавлять пробелы не в конец сроки, а в середину... j := 1;Правка: исправлена опечатка. Сообщение отредактировано: andriano - 18.12.2009 20:43 |
Lapp |
18.12.2009 14:45
Сообщение
#14
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Два вари анта на выбор: j := 1; Боюсь, первый вариант пролетает... вот т е бе зад а ч к а 1 23 Впрочем, как и второй.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
marwell |
18.12.2009 17:11
Сообщение
#15
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
Что не получается? Что пробовал, можно посмотреть? Вообще все должно получаться, если идти от хвоста строки в ее начало (и НЕ циклом for, естественно)
|
andriano |
18.12.2009 20:40
Сообщение
#16
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Боюсь, первый вариант пролетает... вот т е бе зад а ч к а 1 23 Впрочем, как и второй.. Да, в первом Варианте опечатка. А насчет второго - не понимаю. Специально поставил на комп компилятор паскаля. Полностью программа: var Результат работы: Код <вот т е бе зад а ч к а 1 23> <вот т е бе зад а ч к а 1 23> <вот т е бе зад а ч к а 1 23> <вот т е бе зад а ч к а 1 23> Сообщение отредактировано: andriano - 18.12.2009 20:41 |
Lapp |
19.12.2009 1:43
Сообщение
#17
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Да, в первом Варианте опечатка. А насчет второго - не понимаю. Ну и во втором тоже опечатка.. Только она почему-то не попала в твой код.-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Текстовая версия | 9.06.2024 16:10 |