![]() |
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 |
![]() ![]() |
![]() |
Текстовая версия | 23.06.2025 3:26 |