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

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

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

> логарифмы vs. *, отредактируйте прогу...
сообщение
Сообщение #1


Человек
*****

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

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


Добрый день!
Необходимо написать программу которая б демонстрировало разность в скоростях при использовании логарифмов и умножении
помогите разобраться с ошибками...
заранее благодарен..

uses crt, Dos, math;

Function GetTime: LongInt;
Var h, m, s, ms: Word;
begin
Dos.GetTime(h, m, s, ms);
GetTime := ms + 100 * (s + 60 * (m + 60 * h));
end;

var
r,
re,
start:LongInt;
i, size:integer;
_array: array [0..size] of integer;
const
e=2.71828;
begin
randomize;
size:=random(1000);
r:=1;
start := GetTime;
for i:=0 to size do
begin
_array[i]:=random(32000);
end;
WriteLn('Время выполнения заполнение массива = ', GetTime - start);

start := GetTime;
for i:=0 to size do
begin
r:=_array[i]*r;
end;
WriteLn('Время выполнения умножения = ', GetTime - start);

r:=0;

start := GetTime;
for i:=0 to size do
begin
r:=ln ( _array[i] )+r;
end;

for i:=0 to r do
begin
re:=re*e;
end;
WriteLn('Время выполнения заполнение массива = ', GetTime - start);
end.



Сообщение отредактировано: compiler -


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


Гость






Цитата
помогите разобраться с ошибками...
А чего с ними разбираться?

при описании массива нельзя пользоваться переменной в качестве индекса, можно - только константой... Для того, чтобы сделать то, что ты хочешь - надо:

var
_array: array of integer;

begin
randomize;
size:=random(1000);
r:=1;

setlength(_array, size);
for i:=0 to size-1 do begin
_array[i]:=random(32000) + 1; // Чтобы сразу отсечь попытку Ln(0) чуть ниже
end;

...

for i:=0 to size-1 do begin
r:=_array[i]*r; // <-- Нужен ОЧЕНЬ емкий целый тип, или Double
end;

...

Вместо GetTime из модуля DOS я бы воспользовался GetTickCount из модуля Windows...

А вот дальше я не понял, что ты хотел сделать...

for i:=0 to r do
begin
re:=re*e; // Что такое e, например?
end;


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 

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


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

 





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