![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
ROxY |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 33 Пол: Женский Репутация: ![]() ![]() ![]() |
программа разбивки и анализа содержимого файла отчета ПО(LOG-файла).Необходимо проанализировать и подсчитать запросы, а также вывести их в алфавитном порядке с подсчетом числа повторений. Сортировку запросов необходимо проводить по CGI-переменным S21STR и S21ALL.
var filin,filout:string;
f:text;
pod:array[1..800]of string[70];
count:array[1..800]of integer;
i,n,y:integer;
var s:string[10];
begin
assign(f,filin);
reset(f);
n:=0;y:=0;
while not eof(f) do
begin
readln(f,s);
if s=pod[n] then inc(y)
else begin
if n<>0 then count[n]:=y;
inc(n);pod[n]:=s;y:=1;
end;
end;
count[n]:=y;
close(f);
assign(f,filout);
rewrite(f);
for i:=1 to n do
writeln(f,pod[i],'-',count[i]);
close(f);
end;
var s:string[6];
t:string;
k:integer;
v:char;
begin
assign(f,filin);
reset(f);
read(f,s);
for i:=1 to n do
begin
pod[i]:='';count[i]:=0;
end;
n:=0;t:='';y:=0;
while not eof(f) do
begin
read(f,v);
if ord(v)>31 then begin
if (s<>'S21STR')and(s<>'S21ALL')
then begin
delete(s,1,1);
s:=s+v;
end
else begin
while (v<>'&')and(ord(v)>31) do
begin
if v<>'=' then t:=t+v;
read(f,v);
end;
if (n=0)and(t<>'') then begin inc(n);pod[n]:=t;count[n]:=1;end
else if t<>'' then begin
for i:=1 to n do
if pod[i]=t then begin inc(count[i]);inc(y);end;
if y=0 then begin inc(n);pod[n]:=t;count[n]:=1;end;
y:=0;
end;
s:='S21LOG';t:='';
end;
end;
end;
close(f);
for i:=1 to n do
for y:=i+1 to n do
if pod[i]>pod[y] then
begin
t:=pod[i];pod[i]:=pod[y];pod[y]:=t;
k:=count[i];count[i]:=count[y];count[y]:=k;
end;
assign(f,filout);
append(f);
for i:=1 to n do
writeln(f,pod[i],'-',count[i]);
close(f);
end;
begin
readln(filin);
readln(filout);
end.
вот но она не считает входной файл создала... в чем проблема?? |
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Мутновато. Приведи пример входного файла и результата который будет получен после его обработки.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
ROxY |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 33 Пол: Женский Репутация: ![]() ![]() ![]() |
я не могу запустить программку выдает ошибку...
помогите пожалуйста ну очень надо.. завтра уже сдавать... Прикрепленные файлы ![]() |
Артемий |
![]()
Сообщение
#4
|
![]() Помощник капитана ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: ![]() ![]() ![]() |
Интересно,а почему у тебя переменные описываются прямо в середине кода??И в начале двa var?
Все переменные описывай под одним var в начале кода. Добавлено через 2 мин. Да, а переменную filin ты должна заполнить именем файла.. -------------------- Dum spiro spero!
|
klem4 |
![]()
Сообщение
#5
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Цитата var s:string[10]; while not eof(f) do begin readln(f,s); ![]() Да там длины строк не что что 10, 255 превышают ... подход изначально не верный. Если честно я вообще слабо понимаю что надо слелать. Например в одной из строк S21ALL=(K=бухгалтерск$)*(K=учет$) в другой S21ALL=(A=пушкин$) в третьей S21ALL=(V=ZL) И по какому критерию их сортировать ? Просто групировать ? -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
![]() |
Текстовая версия | 23.07.2025 3:37 |