![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Составить программу (Pascal), которая позволяет провести сравнение трех алгоритмов нахождения НОД по характеристике "временная сложность"(тоесть за какое время выполняется каждый алгоритм).
Программа выполняется циклически. В каждом цикле выбирается пара случайных чисел из заданного диапазона. Для выбранной пары чисел находится НСД тремя методами. Определяется временная сложность для каждого из методов. Для каждого метода подсчитывается среднее и наибольшее значение временной сложности. Полученные результаты оперативно отображаются на экране. Оператор может остановить программу в любой момент. Помогите пожалуйста, очень нужна эта программа! |
#2
|
|||
|
|||
![]() Ну, для начала, тебе неплохо было бы найти алгоритмы для этих 3х способов. Потом написать код, реализующий эти алгоритмы как функции. А в конце - все завернуть в бесконечный цикл, который прерывается по комманде оператора, типа:
Код:
var IsAbort : Boolean; ... procedure TForm1.Button1Click(Sender : TObject); begin IsAbort := True; end; ... begin IsAbort := False; While Not IsAbort Do Begin N1 := Random(1000000)+1; N2 := Random(1000000)+1; tm0 := Now(); DoFirst(N1,N2); tm1 := Now(); DoSecond(N1,N2); tm2 := Now; DoThird(N1,N2); tm3 := Now; Application.ProcessMessages; Memo1.Lines.Add(Format('N1=%d, N2=%d: T1=%s, T2=%s, T3=%s'),[N1,N2,TimeToStr(tm1-tm0),TimeToStr(tm2-tm1),TimeToStr(tm2-tm3)]); End; ... |