![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Tribunal |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
подскажите,а почему неправильно работает следующая весч:
(мне нужно найти в первом предложении самое короткое слово,которого нет во втором) Код const lim=[#0..#32,'.',',',':',';','!','?','"','+']; type Twords=array[1..40] of string; var i,j,k,n1,n2,nmin,h: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);//ñîáèðàåì â ìàññèâ ñëîâà 1 ïðåäëîæåíèÿ n2:=GWords(p2,w2);//ñîáèðàåì â ìàññèâ ñëîâà 2 ïðåäëîæåíèÿ //óäàëÿåì èç ïåðâîãî ìàññèâà ñëîâà,êîòîðûå åñòü âî âòîðîì i:=1; while (i<=n1) do begin j:=1; while (j<=n2) and (AnsiLowerCase(w1[i])<>AnsiLowerCase(w2[j])) do inc(j); if j<=n2 then begin for k:=i to pred(n1) do w1[k]:=w1[succ(k)]; dec(n1);//n1-1 end else inc(i);//i+1 end; //èùåì ñàìîå êîðîòêîå ñëîâî èç îñòàâøèõñÿ nmin:=0; if n1>0 then begin nmin:=1; for i:=2 to n1 do if w1[i]<w1[nmin] then begin nmin:=i; memo1.Lines.append(w1[nmin]); end; end; end; -------------------- irreparabilium felix olivio rerum
|
![]() ![]() |
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Я же привел тебе работающую программу в "Задачах" зачем было что-то менять ? Если уж надо на делфи то бери эти две строки из мемо или эдитов или откуда тебе надо и делай с ними то же самое !
s1 := Edit1.Text; s2 := Edit2.Text; и все. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Tribunal |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
да не в этом дело.
она не выводит искомое слово. или слова,если слов такой длины несколько. то есть если я задаю условие вывода -длину самого короткого слова, выводится лишь последнее слово данной длины. Сообщение отредактировано: Tribunal - 29.03.2006 7:05 -------------------- irreparabilium felix olivio rerum
|
Lapp |
![]()
Сообщение
#4
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
она не выводит искомое слово. Прогони вот этот примерчик: begin - его результат FALSE Для сравнения длин используй функцию Length(s). -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Tribunal |
![]()
Сообщение
#5
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
хорошо.с этим ясно.
нужно теперь выцвести слова заданной длины списком в мемо. как это сделать? -------------------- irreparabilium felix olivio rerum
|
Lapp |
![]()
Сообщение
#6
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
нужно теперь выцвести слова заданной длины списком в мемо. как это сделать? Не совсем ясно, что именно не ясно ![]() Как искать слова заданной длины? вроде, должно быть ясно, если ясно предыдущее все.. Как выводить в мемо? вроде, ты это делала.. И что значит - списком? в смысле, пронумеровать? ? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Tribunal |
![]()
Сообщение
#7
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
Не совсем ясно, что именно не ясно ![]() Как искать слова заданной длины? вроде, должно быть ясно, если ясно предыдущее все.. Как выводить в мемо? вроде, ты это делала.. И что значит - списком? в смысле, пронумеровать? ? да не то,чтобы пронумеровать,просто мне нужно вывести все слова минимальной длины. так,как вроде бы должно выводить,выводит лишь последнее такое слово Код if nmin>0 then begin Memo1.Lines.Append(w1[nmin]); for i:=nmin+1 to n1 do if length(w1[i])=length(w1[nmin]) then Memo1.Lines.Append(w1[i]); end; -------------------- irreparabilium felix olivio rerum
|
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 4:27 |