Форум: "Основная";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];
ВнизНовая проблема :+( Найти похожие ветки
← →
stalin (2001-12-18 00:20) [0]Как зная сколько цифр в числе математическим способом развернуть число (т.е было 135 , должно получися 531 ) ....... Вот ! ;+)
← →
Blackweber (2001-12-18 00:28) [1]Возможно можно запустить цикл от 1 до length(num), в котором считывается первая цифра и ставится в конец числа.
← →
Blackweber (2001-12-18 00:34) [2]т.е. 135>351>513
← →
False_Delirium (2001-12-18 01:02) [3]Function Reverse(Z:Integer) : Integer ;
var T : Integer;
begin
Result := 0 ;
T := Trunc(Ln(Z)/Ln(10));
while Z>0 do
begin
Inc(Result ,(Z mod 10) * Round(Exp((T)*Ln(10)))) ;
Z := Z div 10 ;
Dec(T) ;
end
end;
← →
Sergey_n (2001-12-18 01:37) [4]могу предложить вариант в C++
int x = 27531; //которое надо развернуть
int y = 0; //куда развернуть
int n=(int)log10(x); //длина числа которе развернуть
for (int i=n;i>=0;i--){
y=y+((int)(x/pow(10,i))-10*(int)(x/pow(10,i+1)))*(int)pow(10,n-i);
}
← →
False_Delirium (2001-12-18 02:05) [5]>Sergey_n У тебя 14 операций за итеррацию..а у меня 10...:)..хе..:))..:)))...кто меньше..?.:)))
← →
Sergey_n (2001-12-18 03:16) [6]Вопрос ставился написать, а не кто меньше. В данном случае задача выполнена. Кстати как ты считал(итерации)????
← →
False_Delirium (2001-12-18 04:14) [7]А зачем ты тогда писал, если задача была уже выполнена, когда был написан первый пример..?? Количество итераций -- это количество повторений цикла, а количество операций -- это количество арифметических действий за одну итерацию.
← →
Sergey_n (2001-12-18 22:59) [8]2False_Delirium когда я начал писать она еще не была выполнена.
>Количество итераций -- это количество повторений цикла, а количество
>операций -- это количество арифметических действий за одну итерацию.
это ежу понятно. А ты уверен что в нутрях фу-й Inc, Round, ... арифметических действй столько, сколько ты думаешь?????
← →
False_Delirium (2001-12-19 00:10) [9]Хе..:)... а вот в Inc уверен, а вот Round дествительно выполняется в 3 операции, его вообще убрать можно.....а вот что ты скажешь про pow ...:)... ?..:)
← →
KilkennyCat (2001-12-19 02:27) [10]но ведь все это не математический способ.
← →
Sergey_n (2001-12-19 04:41) [11]2False_Delirium я не поленился и потестил используя след. прог.
Label1->Caption = DateTimeToStr(Now());
double x = 20,y;
for (register __int16 i=0;i<2767;i++)
for (register __int16 j=0;j<32767;j++)
<выражение для теста>;
Label2->Caption = DateTimeToStr(Now());
и вот результат:
выражение | время выполнения (для моего компа)
-----------------------------------------------------------
pow(10,x) | 19 сек
exp(x) | 28 сек
ln(x) | 25 сек
-----------------------------------------------------------
итого exp+ln = 53 сек, pow+pow+pow = 57 сек
ну а если к exp+ln добавить Inc, Round, Dec, ....
то можно ещё поспорить кто быстрее.
← →
False_Delirium (2001-12-19 05:16) [12]На паскале напиши для начала, а затем сравни..:))...чтобы тестировать...
а то нужно тогда два языка в контексте скорости выполнения рассматривать..:)..
Да...так ты тестируй сразу функции "переворота"....
← →
False_Delirium (2001-12-19 05:32) [13]>KilkennyCat А какой же это способ..??.:)...именно математический, никаких других операций использовано не было..
← →
False_Delirium (2001-12-19 05:37) [14]Да, кстать...DateTimeToStr(Now())- это немного не подходящая ф-ция, для таких тестов..:))..
← →
Sergey_n (2001-12-19 06:10) [15]2False_Delirium Delphi лень ставить, а чем DateTimeToStr(Now()) тебе не нравится? Если ты о точности, то увелич цикл(или их кол-во), чтобы дольше выполнялось.
← →
KilkennyCat (2001-12-20 01:33) [16]>False_Delirium а в математике есть циклы ? :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c