Строки, слова в предложениях |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Строки, слова в предложениях |
Tribunal |
Сообщение
#1
|
Бывалый Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: 0 |
нужно найти самое короткое слово в первом предложении, которого нет во втором предложении.
а также в обоих предложениях удалить символ # и удвоить символ +. подскажите хотя бы,с чего начать. -------------------- irreparabilium felix olivio rerum
|
Altair |
Сообщение
#2
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Пусть 1 предложение - первая строка , а вторая строка - второе предложение.
Начни с того, что разбей строки на слова. Как это сделать - возьми любой алгоритм отсюда или FAQ разбиение на слова Если не нравяться те алгоритмы, можешь взять мою программу - Разбиение на слова Далее, имея масив (или список) слов, работаешь с ними. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Tribunal |
Сообщение
#3
|
Бывалый Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: 0 |
а вот по второй части задания.
попробовала сделать так: Код var i,k:integer; begin for i:=0 to length(p1) do begin k:=pos('#',p1); delete(p1,k,1); k:=pos('+',p1); insert('+',p1,k+1); end; for i:=0 to length(p2) do begin k:=pos('#',p2); delete(p2,k,1); k:=pos('+',p2); insert('+',p2,k+1); end; символ # удаляется, а вот + становится просто много=) -------------------- irreparabilium felix olivio rerum
|
hardcase |
Сообщение
#4
|
code warrior Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: 8 |
-------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
klem4 |
Сообщение
#5
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Дык можно короче ...
while pos('#', s) <> 0 do delete(s, pos('#', s), 1); -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
hardcase |
Сообщение
#6
|
code warrior Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: 8 |
Я,знаю, но Pos будет много раз просматривать строку, а я за 1 проход убиваю все '#' - мы ведь не что-то вроде substr ищем.
-------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
Tribunal |
Сообщение
#7
|
Бывалый Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: 0 |
объясните,пожалуйста,в чем проблема
Код const lim=[#0..#32,'.',',',':',';','!','?','"','+']; type Twords=array[1..40] of string; zel=set of byte; var z:zel; i,n1,n2,min,d,k:byte; w1,w2:Twords; function GWords(p:string;var w:Twords):byte; var i,b,n:byte; begin i:=1; n:=0; while (i<=length(p)) do begin while (i<=length(p)) and (p[i] in lim) do inc(i);{+1} if i<=length(p) then begin b:=i; while (i<=length(p)) and not(p[i] in lim) do inc(i); inc(n); w[n]:=copy(p,b,i-b); end; end; GWords:=n; end; begin n1:=GWords(p1,w1); n2:=GWords(p2,w2); repeat min:=length(w1[1]); for i:=1 to n1 do if length(w1[i])<min then begin min:=length(w1[i]); k:=i; end; for i:=1 to n2 do d:=pos(w1[k],w2[i]) until not(d in z); Label4.Caption:=w1[k]; end; в некоторых случаях она даже работает=) -------------------- irreparabilium felix olivio rerum
|
hardcase |
Сообщение
#8
|
code warrior Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: 8 |
Вероятно программа разбивает на слова строки p1 и p2 а потом находит самое короткое слово из p1.
А вообще-то написан откровенный бред. -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
Tribunal |
Сообщение
#9
|
Бывалый Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: 0 |
Вероятно программа разбивает на слова строки p1 и p2 а потом находит самое короткое слово из p1. А вообще-то написан откровенный бред. ну предложите,пожалуйста,свой вариант решения данной проблемы,если не трудно -------------------- irreparabilium felix olivio rerum
|
hardcase |
Сообщение
#10
|
code warrior Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: 8 |
Воробще-то нужно для начала написать, что за задание или, то, что вы ожидаете от программы - ТАКОЙ код никто смотреть просто не станет.
-------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
Tribunal |
Сообщение
#11
|
Бывалый Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: 0 |
задание в самом начале темы.
мне нужно найти в первом предложении самое короткое слово,которого нет во втором. -------------------- irreparabilium felix olivio rerum
|
Tribunal |
Сообщение
#12
|
Бывалый Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: 0 |
еще вот такой недоработанный вариант выделения искомого слова
Код begin n1:=GWords(p1,w1); n2:=GWords(p2,w2); m:=0; min:=length(w1[1]); while i<=n1 do begin if length(w1[i])<min then begin min:=length(w1[i]); inc(m); w3[m]:=w1[i]; end; if m=0 then begin inc(m); w3[m]:=w1[1]; end; end; while i<=n2 do begin while j<=m do begin if w3[j]<>w2[i] then writeln(w3[j]); inc(j); end; inc(i); end; end; -------------------- irreparabilium felix olivio rerum
|
Tribunal |
Сообщение
#13
|
Бывалый Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: 0 |
помогите,пожалуйста,
никак не плучается выделить такое слово -------------------- irreparabilium felix olivio rerum
|
klem4 |
Сообщение
#14
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Проверяй ...
uses crt; Сообщение отредактировано: volvo - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Tribunal |
Сообщение
#15
|
Бывалый Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: 0 |
спасибо большое.
а если слов минимальной длины несколько? я попробовала выводить слова минимальной длины,но выводится только последнее. в чем ошибка? Код i:=1; while (i<=n1) do begin if length(w1[i])=nmin then writeln(w1[i]); inc(i); end; Сообщение отредактировано: Tribunal - -------------------- irreparabilium felix olivio rerum
|
klem4 |
Сообщение
#16
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
if n1 > 0 then begin вот так. Сообщение отредактировано: volvo - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Текстовая версия | 28.03.2024 20:36 |