![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
mapblwka |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
И снова проблема, и снова не могу никак решить, уже над этой задачи вторую неделю сижу и не могу закончить.
ЗАДАНИЕ: Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по следующему правилу: Оставить в слове только первые вхождения каждой буквы. С первым условием справились с горем пополам, использовав FAQ по строкам made by вами. А вот второе.. НУ НИКАК! не удалеяет симоволы вот. Может это уже проблема многочасовго сидения за данной проблемой. Код program strochki; uses crt; type wmas=array[1..100] of string; {mumumu - исходная строка myp - последние слово yry - строка из слов не совпадающих с последним словом не одним символом xex - массив исходных слов lol - массив слов не совпадающих с последним словом не одним символом f - флажок для проверки первого совпадения символов kyky - переменная для нахождения номера символа, с которого начинается найденная подстрока в строке. i,j,k,l,q,c - различные счетчики, задействованные и нет. y,z - вспомогательные строки} {Процедура для вставки слов из строки в массив} procedure GetWords(mumumu:string; var xex:wmas); var i,j:shortint; mm:string; begin while pos(' ',mumumu)<>0 do delete(mumumu,pos(' ',mumumu),1); if mumumu[1]=' ' then delete(mumumu,1,1); if mumumu[length(mumumu)]=' ' then delete(mumumu,length(mumumu),1); {г¤ «ҐЁҐ «ЁиЁе Їа®ЎҐ«®ў} i:=1; for j:=1 to length(mumumu) do if mumumu[j]<>' ' then xex[i]:=xex[i]+mumumu[j] else if i<>high(xex) then inc(i); {§ Ї®«пҐв ¬ ббЁў б«®ў ¬Ё Ё§ ба®ЄЁ} end; var mumumu,yry,myp,byrara,y,z:string; xex,lol:wmas; kyky,c:integer; i,k,q,j,l:shortint; f:boolean; label bu; begin clrscr; writeln('Введите строку, разделяя слова пробелами, в конце поставьте точку.'); readln(mumumu); byrara:=mumumu; GetWords(byrara,xex); k:=(length(mumumu)-1); while mumumu[k]<>' ' do begin inc(i); dec(k); end; myp:=copy(mumumu,k+1,i); writeln('Последние слово: ', myp); for k:=1 to high(xex) do begin f:=false; for l:=1 to length(myp) do begin kyky:=1; kyky:=pos(myp[l],xex[k]); if kyky=0 then f:=true; end; if f=true then yry:=yry + xex[k]+ ' '; end; writeln('Исключительные словав: ',yry); {--------------------------------------------------} GetWords(yry,lol); for i:=1 to high(lol) do begin y:=lol[i]; for k:=1 to length(y) do begin kyky:=pos(y[k],y); q:=length(y); z:=copy(y,kyky,q); kyky:=pos(y[k],z); if kyky<>0 then delete(y,kyky,1) end; end; for j:=1 to high(lol) do write(lol[j],' '); readkey; end. НЕ РАБОТАЕТ: удаление повторяющихся символов в словах не совпадающих с последним словом, не одним символом. {последняя часть программы} помогите... пожалуйста!! Сообщение отредактировано: mapblwka - 30.11.2005 18:03 |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
mapblwka,
![]() ![]() Все предельно просто: program strochki; Согласна? Сообщение отредактировано: volvo - 30.11.2005 18:49 |
mapblwka |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
To: volvo
с переменными согласна, у меня уже после 3 часа глюк пошел, я взяла все переименовала, чтобы как то веселей было. Не работает, так как надо... Те же проблемы что и у меня. Что нам надо: 1) дана строка: aaabbbccc defv llllooookkkk ve. 2) первое преобразование, удаляем слова с повторяющиимеся символами с последним словом, остается: aaabbbccc llllooookkkk 3) (для меня самое сложное) удалить повторяющееся символы в слове, то есть мы должны получить вот такую строчку (или массив уже всеровно, лишь бы выдал) abc lok все. ЗЫ: при введение в твою программу строки aaabbbcccc aaabbbccc выдает abcc вот так ![]() |
mapblwka |
![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
еще: я сделала все пункты кроме 3). не получается и все тут.
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
mapblwka,
а если ВНИМАТЕЛЬНО прочитать задание? Цитата Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по следующему правилу: Оставить в слове только первые вхождения каждой буквы. Перевожу на русский: пройти по массиву слов. Если текущее слово совпадает с последним - не печатать его. Если НЕ совпадает - преобразовать (согласно заданному алгоритму) и напечатать. Цитата при введение в твою программу строки aaabbbcccc aaabbbccc выдает abcc Так что ДОЛЖНО выводить? Проверяем: последнее слово = "aaabbbccc"... Возражения есть? Нету... Идем по остальным словам:1) aaabbbcccc - совпадает с последним? Нет... Преобразуем: получим "abc" Вопросы? P.S. В программе был пропущен знак "="... Исправлено... |
mapblwka |
![]()
Сообщение
#6
|
Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
мой мозг отказался воспиринять твой алгоритм, можешь кратко объяснить че где делается... после удаление пробелов, я ничего не понимаю... хотя все исправно работает.
|
Atos |
![]()
Сообщение
#7
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
У нас остаются только одиночные пробелы. Ищем первый пробел(он показывает, где конец первого в данный момент слова в строке), удаляем это первое слово, скопировав его перед этим в массив слов. Повторяем это для строки, пока она не будет состоять из одного лишь последнего слова, тогда копируем строку в массив. При этом счётчиком i считаем количество слов.
[offtop] To: volvo, к слову, а почему pred(p) вместо простого р-1 ![]() |
klem4 |
![]()
Сообщение
#8
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Как-то обсуждали уже,
Цитата To: volvo, к слову, а почему pred(p) вместо простого р-1 smile.gif Вообще, это будет как-то различаться по быстродействию? ![]() -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
![]() |
Текстовая версия | 19.06.2025 12:01 |