Язык Паскаль, Тип данных - строки |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Язык Паскаль, Тип данных - строки |
Провинциалка |
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 57 Пол: Женский Реальное имя: Ольга Репутация: 2 |
Прошу помочь в написании программы для задачи:
"В заданном предложении в каждом слове удалить все последующие вхождения первой буквы предложения. Новый текст вывести на печать". Альтруисты, откликнитесь! |
Unconnected |
Сообщение
#2
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
эгоисты молчат..
Какие мысли по поводу задачи? -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Провинциалка |
Сообщение
#3
|
Пионер Группа: Пользователи Сообщений: 57 Пол: Женский Реальное имя: Ольга Репутация: 2 |
Мыслей много всяких. Одна из них - понять смысл задачи
|
Unconnected |
Сообщение
#4
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Тебе нужно взять первую букву, а потом идти по строке и удалять остальные такие. Интересное уточнение "в каждом слове" - будто буквы могут быть не в слове)
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
TarasBer |
Сообщение
#5
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
> а потом идти по строке и удалять остальные такие
Неправильно. Правильно так: > а потом идти по строке-источнику и писать в строку-приёмник всё, кроме остальных таких. А то, что ты сказал, будет работать за O(n^2). Хотя хоть как-то работать будет. -------------------- |
Unconnected |
Сообщение
#6
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Разве? По-моему, в первом варианте будет меньше действий, и тоже один проход по строке..
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
TarasBer |
Сообщение
#7
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Удаление элемента из строки - за сколько, по-твоему, работает?
Оно, между прочим, весь хвост сдвигает. -------------------- |
Archon |
Сообщение
#8
|
Профи Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: 24 |
Цитата Удаление элемента из строки - за сколько, по-твоему, работает? Оно, между прочим, весь хвост сдвигает. А добавление в строку - создает новую. Тогда уж на первом проходе посчитать удаляемые символы, создать строку нужного размера и только потом копировать в нее символы. Но новичка оптимизации только запутают. -------------------- Close the World...txeN eht nepO
|
TarasBer |
Сообщение
#9
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
> А добавление в строку - создает новую.
Реаллокации весьма редки, у дельфей менеджер памяти хороший, можно наращивать по единице, и не париться. > Тогда уж на первом проходе посчитать удаляемые символы, создать строку нужного размера и только потом копировать в нее символы. Ну вообще да, лучше заранее создать буфер нужной длины. -------------------- |
Гость |
Сообщение
#10
|
Гость |
Спасибо всем кто откликнулся на мою мольбу. Попробую написать программу, хотя очень сомневаюсь что мне - первокурснице, это по зубам! (Слишком бестолковый у нас преподаватель по программированию языка высокого уровня). А надо бы к среде.
|
Archon |
Сообщение
#11
|
Профи Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: 24 |
Покажи, что написала, а мы подскажем что не так.
-------------------- Close the World...txeN eht nepO
|
sheka |
Сообщение
#12
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
а почему нельзя просто:
k:=0; осуществлять проход по строке и при встрече нужного символа увеличивать значение k на 1, а иначе а[i-k]:=a[i]; Обрезать строку. |
TarasBer |
Сообщение
#13
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
> а почему нельзя просто:
Ну на самом деле это в глубине души и есть добавление в новую строку только того, что надо, просто новая строка собирается прямо на месте старой. Это правильный алгоритм, вообще я уже предлагал запостить его в FAQ в виде удаления из массива нескольких элементов по некоторому признаку без использования допмассивов. -------------------- |
Провинциалка |
Сообщение
#14
|
Пионер Группа: Пользователи Сообщений: 57 Пол: Женский Реальное имя: Ольга Репутация: 2 |
Вроде так, но программа не работает! (Или это ахинея?)
Program stroka1; Сообщение отредактировано: Lapp - |
Archon |
Сообщение
#15
|
Профи Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: 24 |
Ты выделяешь в предложении слова и удаляешь из каждого слова повторы первой буквы этого слова, а надо первой буквы предложения. Вообще, для решения задачи выделять слова не нужно. Достаточно, как сказали выше, взять первую букву предложения и удалить её из всей оставшейся части строки. Одного цикла достаточно.
PS Добавь тег [code] вокруг текста программы, а то его сложно читать. -------------------- Close the World...txeN eht nepO
|
Провинциалка |
Сообщение
#16
|
Пионер Группа: Пользователи Сообщений: 57 Пол: Женский Реальное имя: Ольга Репутация: 2 |
Уважаемый Archon! Позвольте задать вам глупый вопрос: Что означает "Добавь тег [code] вокруг текста программы"?
|
Lapp |
Сообщение
#17
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Что означает "Добавь тег [code] вокруг текста программы"? 1. пометь программный код блоком; 2. кликни меню CODE над формой ввода; 3. выбери нужный пункт (Pascal/Delphi); 4. увидишь, что вставились теги перед и после кода; 5. то же самое можно делать "вручную" (просто набрать с клавы); 6. читай Правила! Там все есть. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Провинциалка |
Сообщение
#18
|
Пионер Группа: Пользователи Сообщений: 57 Пол: Женский Реальное имя: Ольга Репутация: 2 |
Видимо я должна была писать программу на Pascal в среде Delphi. Если так, то к сожалению у меня установлен только Turbo Pascal.
|
sheka |
Сообщение
#19
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Нет, Б**! Надо написать вот так:
Цитата [.code=pas]вот здесь твой код[./code] Только БЕЗ точек! БЕЗ! Похфиг на чем ты писала! это на форуме, когда вводишь сообщение написать надо. А в данный момент нажми "изменить" свое уже написаное сообщение, и вставь туда теги [code]Добавлено через 10 мин. Хотя Lapp это уже сделал , поэтому, если хочешь, посмотри, пожалуйста, как, нажав на "изменить сообщение". НО ничего менять не надо! Сообщение отредактировано: sheka - |
Провинциалка |
Сообщение
#20
|
Пионер Группа: Пользователи Сообщений: 57 Пол: Женский Реальное имя: Ольга Репутация: 2 |
А программу подредактировать поможешь?
|
Текстовая версия | 29.04.2024 19:11 |