ВОПРОС · Q&A

Файлы.Гистограма длины слов

26 ответов 11,4 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Со стринг листом еще быстрее.
 
атавизмы - ну, "хвосты" от той задачи, которую вы решали - вывести число слов заданной пользователем длины.
типа этого:
и чуть ниже там тоже есть...

Исходная задача автора - определение кол-ва одно-, двух-, трехбуквенных и т.д. слов в заданном тексте.
Я по-другому уже не могу сформулировать))))
Исправил, чет задачу сначала не так понял.

Со стринг листом еще быстрее.
Стринглист, в паскале? может в Делфи?
 
насколько помню: почему глючит с длиной >255- в стандартных паскалевских строках длина зашита в 0 байте... диапазон байта - 0..255. И еще тип PChar был вроде=)
if pos(s,st)>0 then word_length:=word_length+1; if pos(s,st)=0 then

А почему такая ненависть к else? Я что-то пропустила, это в паскале сейчас дурной тон? :KillMe:
мб, еще if pos(s,st) < 0 добавить? :rolleyes: - так, на всякий случай ;)
s, st - не меняются на одной и той же итерации цикла, pos - стандартная ф-ция, которая не будет сразу и > 0 и =0.
 
Незнаю.
 
Со стринг листом еще быстрее.
что-то я не припомнила в паскале ничего такого стандартного :KillMe:
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Так, для инфы:</div></div><div class="sp-body"><div class="sp-content"> у нас на LotusScript есть стандартная альтернатива массиву - List - бывает иногда удобно :rolleyes:
Это динамический список элементов одного типа (в том числе и объектов), есть проверка наличия элемента, возможен проход по всем элементам, доступ по строке-ключу. Если бы задачку решала на этом языке, точно взяла бы его в качестве хранилища, так как строки у нас переменной длины и могут содержать до 32K символов.
типа такого:
A list is a one-dimensional collection of elements of the same data type. You can change the size of a list at any time while the application is running and LotusScript does not allocate any storage space at compile time for the elements of a list. Lists automatically shrink or grow when elements are deleted from or added to them. You access each element in a list by a unique String value, called a list tag.
я б просто не пинала дважды pos или вообще сделала проверку на множествах (если бы помнила точно точку разрыва диапазонов для русских символов - он не был непрерывным (вроде в какой-то из кодировок))
Код:
 if pos(s[i],st)>0 then { или альтернатива - if (s[i] in ['a'..'z', 'A'..'Z']) then }
word_length:=word_length+1 
else
begin
if (word_length>0)and(word_length<=255) then
sym_word_count[word_length]:= sym_word_count[word_length]+1
else sym_word_count[256]:=sym_word_count[256]+1;
word_length:=0;	
end;
 
В вопросе не уточняется что это только паскаль, автору пофик, поэтому можно экскрементировать.
 
Спасибо вам большое...
счас буду все разбирать...
Это в Паскале..
и мне не пофиг - просто я заболела немного + экзамены сдавала параллельно и еще проги писала...
уже начала сомневаться,ту ли проффесию выбрала - нервы сдают...
трудно просто - а еще одна в чужой стране..
поэтому и буквы не англ.а польськие..
но спасибо за помощь..
надеюсь я все-таки справлюсь и стану нормальным програмистом.. если не сдамся =\

а еще я в Паскале новичек - поэтому стараюся все проги как-то попроще понять, и некоторые премудрости обойти - иногда код длиннее, но просто учитель строгий =\