Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.08;
Скачать: CL | DM;

Вниз

Новая проблема :+(   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
1-22178
Анастасия
2001-12-15 21:38
2002.01.08
Нужна информация!


1-22117
Tupnyk
2001-12-19 18:59
2002.01.08
Как прервать запуск экзешника?


4-22486
Pantero
2001-11-03 23:59
2002.01.08
Handle


1-22234
x000d
2001-12-17 01:34
2002.01.08
Активное ,не активное.


1-22172
ASTARD
2001-12-19 22:12
2002.01.08
Народ помогите плиз ???