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


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

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

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


Помогите!!!

еще, компилятор -- FP.

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


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


Гость






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

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

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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


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

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

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


следующая версия...
uses crt, Dos, math, Windows;

var
r,
re:Int64;
start:Int64;
i, size:Int64;
_array: array of Int64;
const
e=2.71828;

begin
randomize;
size:=random(1000);
r:=1;
re:=1;
setlength(_array, size);

start := GetTickCount();
for i:=0 to size-1 do
begin
_array[i]:=random(32000)+1;
end;
WriteLn('Время выполнения заполнение массива = ', GetTickCount() - start);

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

r:=0;

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

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




е -- основа натуральных(неперовых[как называют некоторые]) логарифмов
а хотел я переменную r(логарифм) превратить в число переменная rе

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


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

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

 





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