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

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

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

 
 Ответить  Открыть новую тему 
> Cчётчики, Куда их?
сообщение
Сообщение #1


Пионер
**

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

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


Ммм вот тут никак не въеду..
Надо какимто образом вставить в обе процедуры (метод Хоара и метод сливания) счётчик, чтоб узнать количество сравниваний.
Тока вот куда?
Плиииз unsure.gif Прикрепленный файл  HOARSALI.PAS ( 2.16 килобайт ) Кол-во скачиваний: 202


--------------------
Ben sensiz yaşayamam
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






По-моему, я уже где-то показывал, как это можно сделать. Попробую найти ссылку, а пока - просто принцип:
Операцию сравнения заменить на функцию:

function IsGreater(a, b: LongInt): boolean;
begin
IsGreater := (a > b);
{
Ну, как ты понимаешь, ЗДЕСЬ производилось сравнение,
поэтому именно тут увеличивай счетчик
}
end;

smile.gif

Тогда, например, фрагмент:
while ar[j]>tempr do ...
Перепишется в виде:
while IsGreater(ar[j], tempr) do ...
, ну и не забывай обо ВСЕХ остальных сравнениях, тебе же надо считать все?

P.S.
unsure.gif unsure.gif Не понял... Я же вроде тебе же показывал, как это делается?

Счётчик, Куда его поставить?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

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

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


Ага, спасибо! С Хоаром разобралась.
Но в другой процедуре всё ещё не найду куда


--------------------
Ben sensiz yaşayamam
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата(Anastacia Adesso @ 4.10.2006 14:54)
Но в другой процедуре всё ещё не найду куда

Чем она кардинально отличается от Хоара? По-моему, ничем...

procedure merge(var ar:masiv; n:integer);

type
T = (cmLess, cmEqual, cmGreat);
function Compare(a, b: longint): T;
begin
if a < b then Compare := cmLess
else if a > b then Compare := cmGreat
else Compare := cmEqual;
inc(count);
end;

procedure Slit( k, q: longint);
var
m: longint;
i,j,t: integer;
d: masiv;
begin
m:=k+(q-k) div 2;
i:=k; j:=succ(m); t := 1;
while (i<=m) and (j<=q) do begin
if compare(ar[ i ], ar[ j ]) in [cmLess, cmEqual] then begin
d[t]:=ar[ i ]; Inc(i)
end
else begin
d[t]:=ar[ j ]; Inc(j)
end;
inc(t)
end;

while i<=m do begin
d[t]:=ar[ i ]; inc(i); inc(t)
end;
while j<=q do begin
d[t]:=ar[ j ]; inc(j); inc(t)
end;
for i:=1 to pred(t) do ar[pred(k+i)]:=d[i]
end;

procedure sort(i,j:integer);
var t: integer;
begin
if i>=j then exit;
if j-i=1 then begin
if compare(ar[ j ], ar[ i ]) = cmLess then begin
t:=ar[ i ]; ar[ i ]:=ar[ j ]; ar[ j ]:=t
end
end
else begin
sort(i,i+(j-i) div 2);
sort(i+(j-i) div 2+1,j);
slit(i, j)
end;
end;

begin
sort(1,n);
end;
...
 К началу страницы 
+ Ответить 

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

 




- Текстовая версия 20.09.2017 7:29
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"