Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2010, 01:29   #1
Milashka_zp
Пользователь
 
Аватар для Milashka_zp
 
Регистрация: 24.05.2009
Сообщений: 24
По умолчанию Сортировка массива, таймер(pascal)

Написать программу для сортировки массива. Определить время за которое программа выполняет алгоритм сортировки массива.

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


Код:
uses dos,crt;
const N=1000;
var 
    i,j,key,m:integer;
    a:array[1..N] of integer;
    h_s,m_s,s_s,hs_s:word;
begin
       clrscr;
       readln(m);
for i:=1 to m do
begin 
       readln(a[i]);
end;
GetTime(h_s,m_s,s_s,hs_s);
writeln('start = ',m_s,'min',s_s,'sec',hs_s,'msec'); 
for i:=2 to n do 
begin 
       key:=a[i];
       j:=i-1;
       while (j>=1) and (A[j]>key)
       begin
             a[j+1]:=a[j];
             j:=j-1;
       end;
       a[j+1]:=key;
end;
GetTime(h_s,m_s,s_s,hs_s);
writeln('stop = ',m_s,'min',s_s,'sec',hs_s,'msec');
for j:=1 to m do
begin
       writeln('a[',j,'] = ',a[j]);
end;
end.

Последний раз редактировалось Milashka_zp; 17.02.2010 в 10:26. Причина: недосмотрела
Milashka_zp вне форума Ответить с цитированием
Старый 17.02.2010, 01:46   #2
CodeExpert
Заблокирован
 
Регистрация: 30.10.2009
Сообщений: 468
По умолчанию

Не в переменную x допустим загоняем первоначальное время, в переменную y загоняем конечное время, далее разница между ними в миллисекундах и есть время работы..
только чуть-чуть по-другому:

TimeIn:=GetTickCount;
....
TimeOn:=GetTickcount-TimeIn;
....
Min:=TimeOn div 60000;
Sec:=(TimeOn-(Min*60000))div 1000;

Последний раз редактировалось CodeExpert; 17.02.2010 в 01:50.
CodeExpert вне форума Ответить с цитированием
Старый 17.02.2010, 08:27   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
while (j>=1) to (A[j]>key)
Это что за буттер с бротом?
Что ты этим написать хотела?
Цитата:
GetTickCount
Сэр, помилуйте... Паскаль!
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.02.2010, 11:09   #4
Milashka_zp
Пользователь
 
Аватар для Milashka_zp
 
Регистрация: 24.05.2009
Сообщений: 24
По умолчанию

Это опечатка...

while(j>=1) and (a[j]>key)
Milashka_zp вне форума Ответить с цитированием
Старый 17.02.2010, 11:39   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм... Ну вот:
Код:
uses dos,crt;
const N=1000;
var
    i,j,key,m:integer;
    a:array[1..N] of integer;
    h_s,m_s,s_s,hs_s:word;
begin
       clrscr;
       readln(m);
for i:=1 to m do
begin
       a[i]:=random(200);
end;
GetTime(h_s,m_s,s_s,hs_s);
writeln('start = ',m_s,'min',s_s,'sec',hs_s,'msec');
for i:=2 to n do
begin
       key:=a[i];
       j:=i-1;
       while (j>=1) and (A[j]>key) do
       begin
             a[j+1]:=a[j];
             j:=j-1;
       end;
       a[j+1]:=key;
end;
GetTime(h_s,m_s,s_s,hs_s);
writeln('stop = ',m_s,'min',s_s,'sec',hs_s,'msec');
for j:=1 to m do
begin
       writeln('a[',j,'] = ',a[j]);
end;
readln;
end.
Работает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.02.2010, 15:44   #6
Milashka_zp
Пользователь
 
Аватар для Milashka_zp
 
Регистрация: 24.05.2009
Сообщений: 24
По умолчанию

У меня такая же программа, ты изменил только ввод элеменов массива с клавиатуры на генерацию случайных чисел
Milashka_zp вне форума Ответить с цитированием
Старый 17.02.2010, 15:47   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Milashka_zp
Ошибаешся )
Обрати внимание на readln перед последним end.
Твоя прога не "не работает" а просто по отработке не задерживается на экране. Понятно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.02.2010, 15:57   #8
Milashka_zp
Пользователь
 
Аватар для Milashka_zp
 
Регистрация: 24.05.2009
Сообщений: 24
По умолчанию

У меня не с этим проблема!
Время выводит не правильное, допусим 22 min 13 sec 67 msec, хотя уходят секунды на отработку алгоритма

Последний раз редактировалось Milashka_zp; 17.02.2010 в 16:20.
Milashka_zp вне форума Ответить с цитированием
Старый 17.02.2010, 16:24   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Milashka_zp
GetTime - возвращает текущее время. Протелепачу, что вы ее запускали в Х часов 22 минуты 13 секунд....
Чтобы узнать время работы надо из времени старта вычесть время окончания.
p51x вне форума Ответить с цитированием
Старый 17.02.2010, 16:27   #10
Milashka_zp
Пользователь
 
Аватар для Milashka_zp
 
Регистрация: 24.05.2009
Сообщений: 24
По умолчанию

помимо отсортированного массива выводит:
start = 22 min 34 sec 56 msec
stop = 22 min 34 sec 56 msec
в этом моя проблема
Milashka_zp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива символов(Turbo Pascal 7.0)) Rankin Помощь студентам 4 12.01.2010 17:02
Pascal. Сортировка по четности индексов массива. quba123 Помощь студентам 1 18.12.2009 00:05
Сортировка массива (Pascal) Kion Помощь студентам 4 07.10.2009 23:34
Сортировка массива методом вставок Pascal bpystep Помощь студентам 5 22.04.2009 01:13
Pascal - сортировка массива(файла?) kossner Помощь студентам 14 05.12.2008 14:57