![]() |
Прежде чем задать вопрос, смотрите 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
WriteLn('abcdef'>'bc')
end.
- его результат 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
|
Tribunal |
![]()
Сообщение
#8
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
всё=)
спасибо,Всё нормально=) последний вопрос.... какие символы входят в диапазон #0..#32 ? -------------------- irreparabilium felix olivio rerum
|
klem4 |
![]()
Сообщение
#9
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Служебные символы и пробел (#32)
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Lapp |
![]()
Сообщение
#10
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
какие символы входят в диапазон #0..#32 ? Большинство из них представляется комбинацией <Ctrl-...> в порядке алвафита. Например, символ <Ctrl-С> имеет номер 3, а <Ctrl-Z> - 26. У многих из них есть общеупотребительное значение. Например, №13 - перевод строки, №8 - backspace, №26 - конец файла. Далее, №27 - это ESC. #0 обычно используется как обозначение конца строки. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
klem4 |
![]()
Сообщение
#11
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Цитата #0 обычно используется как обозначение конца строки. Это на сколко я знаю не правда, в с/с++ строка символьная завершается нулевым символом, а в паскале Цитата(Volvo (FAQ)) каждая строка заканчивается символом конца строки (end of line), который представляет собой символ перевода каретки (Chr(13)), за которым, возможно, следует символ перевода строки (Chr(10)). Это в файле. Сообщение отредактировано: klem4 - 29.03.2006 8:40 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Lapp |
![]()
Сообщение
#12
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Это на сколко я знаю не правда, в с/с++ строка символьная завершается нулевым символом, а в паскале Это в файле. Да, разумеется, я имел в виду не конец строки в файле. Я имел в виду именно С. Бес, как грится, попутал, оффтоп приплел.. sorry ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Tribunal |
![]()
Сообщение
#13
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
а,например, "+" , "-" , "*" туда входят ?
полагаю,нет. а # видимо входит... так? -------------------- irreparabilium felix olivio rerum
|
Lapp |
![]()
Сообщение
#14
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
а,например, "+" , "-" , "*" туда входят ? полагаю,нет. а # видимо входит... так? Сначала полагаешь правильно, а потом - не "так" ![]() Ты в Widows работаешь? Запусти Пуск - Программы - Аксессуары - System tools - Character map Там показываются символы, начиная с №33 ($21) И еще один совет. Если хочешь проверить, что за символ с номером, скажем, 123, сделай так. В любом редакторе: нажми Alt и не отпускай. Набери на цифровой клавиатуре (это справа) 1 2 3 - и отпусти альт. Символ должен появиться в редакторе. Осторожно с символами до 32! если наберешь 27 - будет обычный esc, например. Еще один hint: сделай простую прогу, которая выдаст тебе табличку символов типа 16х16. Только с первой строчкой в ней будь осторожна... -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 18:57 |