Помогите с написанием программы,а то в понедельник сдавать надо плиз.
Программа начинает работу в заданном каталоге и спускается по дереву каталогов,записывая по пути размеры всех встретившихся ей файлов.Закончив сканирование каталога,программа должна распечатать гистограмму размеров файлов,используя шаг гистограммы в качестве параметра(например, при шаге 1024,файлы размером от 0 до 1023 байт попадают в один интервал,от 1024 до 2047 байт в другой и т.д.)
volvo
26.11.2005 2:28
Уже было где-то ... Но в общем случае - FindFirst/FindNext, проверяешь очередное имя файла на атрибут "каталог", и если этот атрибут установлен - запускаешь Ее Величество Рекурсию
Как сделать так что бы файлы выводились поблочно(по размерам) от 0-1023, 1023-2047....
klem4
29.11.2005 0:37
Вот сделал набросок .. но с ограничениями ... запускать программу с такими данными будет полезно только для файлов, размером от 1 до 20 мб, если чемто поможет, хорошо Если надо можно и гистограмму сделать ...
{$r-}uses crt, dos;
const
maxDegree = 19;
step = 1024 * 1024;
type
TLong = array[0..maxDegree] of byte;
var
startDir : string;
sizes : TLong;
procedure GetFiles(fn, dir : string; var L : TLong);
var
search : SearchRec;
beginif dir[length(dir)] <> '\'then
dir := dir + '\';
FindFirst(dir + fn, AnyFile, search);
while dosError = 0dobeginif search.attr <> $10thenbegin
writeln(search.name:15, (search.size div step) : 10);
inc(L[search.size div step])
end;
FindNext(search);
end;
FindFirst(dir + '*.*', Directory, search);
while doserror = 0dobeginif (search.attr and16 <> 0) and (search.name[1] <> '.') then
GetFiles(fn, dir + search.name, L);
FindNext(search);
end;
end;
var
i : byte;
begin
clrscr;
FillChar(sizes, sizeof(sizes),0);
GetFiles('*.*','c:\Downloads\Music\Rok', sizes);
writeln;
for i := 1to maxDegree doif sizes[i] <> 0then
writeln(i,' mb : ',sizes[i]);
readln;
end.
Катя
29.11.2005 0:50
Да пожалуйста сделай гистограмму, заранее спасибо!!!
volvo
29.11.2005 1:35
Катя, Горизонтальная ч/б гистограмма в текстовом режиме (шаг гистограммы = 100Кб, диапазон размеров файлов - от 100К до 2Мб)
Если надо добавить цвет - скажи, сделаем...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.