IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Quicksort, gettime
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Не могу понять,до и после сортировки одно и тоже время....
Код
writeln('Kolichestvo chisel v massive:');
readln(rnd);
for i:=1 to rnd do begin
data[i]:=random(rnd);
end;
writeln('poluchenniy massiv:');
for i:=1 to rnd do begin
write(data[i],' ');
end;
writeln;
begin
gettime(h,m,s,ms);
quicksort(data,1,rnd);
gettime(h1,m1,s1,ms1);
writeln('Otsortirovanniy massiv:');
for i:=1 to rnd do
write(data[i],' ');
writeln('s:',h,':',m,':',s,':',ms);
writeln('e:',h1,':',m1,':',s1,':',ms1);
end;
end.

кто может сказать...еще,как вычислить теперь значение времени,за которое отсортировалось.?

Сообщение отредактировано: bigformat -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Да ... видимо время работы менее 1 мс, вот тебе на следующий раз модуль для замера времениб чтобы постоянно не юзать gettime

Модуль и пример работы :

Unit XTIMER;

INTERFACE
Var elapsed: Longint; { прошедшее время, в милисекундах. }
Procedure ClockOn; { включает счётчик времени }
Procedure ClockOff; { выключает его }
Procedure PrintTime; { выводит прошедшее время }

IMPLEMENTATION

{uses CRT;}
const Seg0040: word=$0040; { constant of CRT module }

var start:longint;

{ Copyright © 1989-1993 Norbert Juffa }
FUNCTION Clock: LONGINT; ASSEMBLER; { same as VMS; time in milliseconds }
ASM
PUSH DS { save caller's data segment }
MOV DS, Seg0040 { access ticker counter }
MOV BX, 6Ch { offset of ticker counter in segm.}
MOV DX, 43h { timer chip control port }
MOV AL, 4 { freeze timer 0 }
PUSHF { save caller's int flag setting }
CLI { make reading counter an atomic operation}
MOV DI, DS:[BX] { read BIOS ticker counter }
MOV CX, DS:[BX+2]
STI { enable update of ticker counter }
OUT DX, AL { latch timer 0 }
CLI { make reading counter an atomic operation}
MOV SI, DS:[BX] { read BIOS ticker counter }
MOV BX, DS:[BX+2]
IN AL, 40h { read latched timer 0 lo-byte }
MOV AH, AL { save lo-byte }
IN AL, 40h { read latched timer 0 hi-byte }
POPF { restore caller's int flag }
XCHG AL, AH { correct order of hi and lo }
CMP DI, SI { ticker counter updated ? }
JE @no_update { no }
OR AX, AX { update before timer freeze ? }
JNS @no_update { no }
MOV DI, SI { use second }
MOV CX, BX { ticker counter }
@no_update: NOT AX { counter counts down }
MOV BX, 36EDh { load multiplier }
MUL BX { W1 * M }
MOV SI, DX { save W1 * M (hi) }
MOV AX, BX { get M }
MUL DI { W2 * M }
XCHG BX, AX { AX = M, BX = W2 * M (lo) }
MOV DI, DX { DI = W2 * M (hi) }
ADD BX, SI { accumulate }
ADC DI, 0 { result }
XOR SI, SI { load zero }
MUL CX { W3 * M }
ADD AX, DI { accumulate }
ADC DX, SI { result in DX:AX:BX }
MOV DH, DL { move result }
MOV DL, AH { from DL:AX:BX }
MOV AH, AL { to }
MOV AL, BH { DX:AX:BH }
MOV DI, DX { save result }
MOV CX, AX { in DI:CX }
MOV AX, 25110 { calculate correction }
MUL DX { factor }
SUB CX, DX { subtract correction }
SBB DI, SI { factor }
XCHG AX, CX { result back }
MOV DX, DI { to DX:AX }
POP DS { restore caller's data segment }
END;

procedure clockon;
begin
start:=clock;
end;
procedure clockoff;
begin
elapsed:=clock-start;
end;
Procedure PrintTime;
begin
writeln('Elapsed time = ',elapsed, ' ms');
end;

BEGIN
Port [$43] := $34; { need rate generator, not square wave }
Port [$40] := 0; { generator as programmed by some BIOSes }
Port [$40] := 0; { for timer 0 }
END.



uses xtimer;
var
i : integer;
begin
i := 1;
ClockOn;
repeat
inc(i);
until i = 1000;
ClockOff;
PrintTime;
readln;
end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.04.2024 11:18
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name