Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];

Вниз

Возведение в степень   Найти похожие ветки 

 
gamez   (2008-04-27 00:17) [0]

Как байтовою переменную возвести в степень.?
Вот нашел такую функцию.
Пишет несоответствие типов Byte and Extended

function step(x:byte;k:byte):byte;
begin
    step:=Exp(k*ln(x));
end;


 
DrPass ©   (2008-04-27 00:21) [1]

function step(x:byte;k:byte):extended;
begin
   step:=Exp(k*ln(x));
end;


 
gamez   (2008-04-27 00:27) [2]

Не работает..
Вот пример который мне нужно решить и компилятор указывает на переменную b

N,P,Q,D,E,C: integer;
....
b := Step(b,e) mod n;


 
Восхищенный   (2008-04-27 00:30) [3]

> gamez

Это уже совсем другая ошибка.

Слушай, ты хоть один раз хоть пару страниц хоть одной книжки по Паскалю прочитал?

Здесь тебя ему обучать не станут, долго слишком.


 
gamez   (2008-04-27 00:36) [4]

В паскале нет функции для возведения числа в степень.
Воспользовавшись формулой
XV = eV ln X.
выходит такая функция
function step(x:byte;k:byte):extended;
begin
  step:=Exp(k*ln(x));
end;

У получается не соответствие типов.Я  читаю файл по байтно в переменую b
И с переменной b нужно проделать такую операцию:
b := Step(b,e) mod n;


 
Восхищенный   (2008-04-27 00:43) [5]

> gamez   (27.04.08 00:36) [4]

> В паскале нет функции для возведения числа в степень.

Это знают все. А ты не знаешь типов данных. Как, по-твоему, результат 255^255 может уместиться в 1 байте? Или как можно загнать дробное в целое, не обрезая его?

Не знаешь ты типов данных. А без них - бесполезно. Прочти хоть 10 страниц.


 
gamez   (2008-04-27 00:58) [6]

Вот типы :
Byte        0...255  
ShortInt   -128...+127
Word       0...65 535  
Integer  -32 768...+32 767  
LongInt  -2 147 483 648...+2 147 483 647  

Я файл читаю побайтно, а каждый байт файла мне нужно выщитать по формуле b := Step(b,e) mod n;
Ну и как мне быть?


 
{RASkov} ©   (2008-04-27 01:00) [7]

> [6] gamez   (27.04.08 00:58)
> Ну и как мне быть?

Думать, а не валять дурака... :(


 
Johnmen ©   (2008-04-27 01:02) [8]


> Ну и как мне быть?

Удавиться?


 
Игорь Шевченко ©   (2008-04-27 01:05) [9]


> Как байтовою переменную возвести в степень.?


умножить несколько раз на саму себя


 
gamez   (2008-04-27 01:12) [10]

Ха ХА !!!
Может кто мне табличку умножение ещё подкинет. !!!

Игорь Шевченко ©   (27.04.08 01:05) [9]

Ты что думаеш, что я обкурился и не знаю как воспроизвести в степень
число .
Ты байтовый тип в степень воспроизведи !!!


 
Германн ©   (2008-04-27 01:17) [11]


> gamez   (27.04.08 01:12) [10]
>
> Ха ХА !!!
> Может кто мне табличку умножение ещё подкинет. !!!
>
> Игорь Шевченко ©   (27.04.08 01:05) [9]
>
> Ты что думаеш, что я обкурился и не знаю как воспроизвести
> в степень
> число .
> Ты байтовый тип в степень воспроизведи !!!
>

А что? И подкинем. И учебник по арифметике тоже. Похоже он тебе не помешает.


 
Johnmen ©   (2008-04-27 01:17) [12]

Удавись. Доставь нам радость...


 
Германн ©   (2008-04-27 01:27) [13]


> и не знаю как воспроизвести в степень
> число .

Этого вообще никто не знает. Кроме тебя. :)


 
Германн ©   (2008-04-27 02:01) [14]

Не. Ну я, конечно, отдыхаю после напряженного (хоть и не трудового дня). Поэтому не всё сразу схватываю. Но уж если, то...

> Ты что думаеш, что я обкурился и не знаю как воспроизвести
> в степень
> число .
> Ты байтовый тип в степень воспроизведи !!!
>

Таперича я заметил другую чушь в данном сообщении.
Автор знает как возвести в степень число. (Ну, это он так думает, что знает. Но что он знает нам не ведомо). Но вот возводить в степень "тип", ещё никто, никогда не пытался. По-крайней мере находясь в здравой памяти и в здравом рассудке.

P.S. Я не столь кровожаден как Johnmen ©, но я сторонник идеи Кэтмара.
Дворников не хватает, а представителей семейства ЖЗЧ уже слишком много.


 
korneley ©   (2008-04-27 06:41) [15]


> Германн ©   (27.04.08 02:01) [14]
> Но вот
> возводить в степень "тип", ещё никто, никогда не пытался.
Приношу извинения за офтоп, но не менее забавно.
http://www.rusf.ru/lukin/books/tipa_artikl.htm


 
MBo ©   (2008-04-27 08:05) [16]

http://algolist.manual.ru/maths/count_fast/fast_exp.php


 
Anatoly Podgoretsky ©   (2008-04-27 11:05) [17]

Без грибов тут дело не обошлось.


 
Игорь Шевченко ©   (2008-04-27 11:18) [18]

gamez   (27.04.08 01:12) [10]


>
> Ты что думаеш, что я обкурился и не знаю как воспроизвести
> в степень
> число .
> Ты байтовый тип в степень воспроизведи !!!


function BytePower (Value, Power: Byte): Byte;
var
 I: Integer;
begin
 if Power = 0 then
   Result := 1
 else
 begin
   Result := Value;
   for I := 2 to Power do
     Result := Result * Value;
 end;
end;


 
Palladin ©   (2008-04-27 11:55) [19]


>gamez (27.04.08 01:12) [10]

LMD


 
icWasya ©   (2008-04-28 15:19) [20]

>gamez   (27.04.08 00:36) [4]
>.Я  читаю файл по байтно в переменую b
И с переменной b нужно проделать такую операцию:
b := Step(b,e) mod n;

На прямую код из [18] брать нельзя, так как не обрабатывается переполнение.
Если быть точным, то Вам нужно делать так

const M = 191; // или сколько там
function AddM(A,B:Byte):Byte;
begin
 Result:=(A+B) mod M;
end;
function MulM(A,B:Byte):Byte;
begin
 Result:=(A*B) mod M;
end;
function Step (Value, Power: Byte): Byte;
var
I: Integer;
begin
if Power = 0 then
  Result := 1
else
begin
  Result := Value;
  for I := 2 to Power do
    Result := MulM(Result, Value);
end;
end;// не самый оптимальный вариант, но...



 
Jeer ©   (2008-04-28 16:08) [21]

Между прочим 255^255 ~ 5E613


 
Игорь Шевченко ©   (2008-04-28 16:33) [22]


> Если быть точным, то Вам нужно делать так


255 в степени 1 mod 10 чему будет равно ?


 
palva ©   (2008-04-28 22:30) [23]

Спрашивается, зачем возводить в степень, если потом все равно надо брать по модулю 10.
Это все равно, если бы я стал перемножать десятизначные числа столбиком только для того, чтобы узнать, будет ли четным результат.


 
han_malign ©   (2008-04-29 11:09) [24]


> Между прочим 255^255 ~ 5E613

- зато 255^255 mod 10 = 5 - если по MBo©(27.04.08 08:05)[16] - то без переполнений...
http://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8E_%D0%BD%D0%B0%D1%82%D1%83%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%87%D0%B8%D1%81%D0%BB%D0%B0
если в лоб то for K do Result:= (Result * Value) mod N;

З.Ы. Для модулей > 128 нужен буфер > 8 бит, но для x86 - (Result * Value) - расширяется до 32-бит и на mod N получаем корректный результат без переполнения.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.016 c
2-1209042308
Kolan
2008-04-24 17:05
2008.05.25
Где найти описание всех файлов которые создает Delphi?


4-1189155433
ter
2007-09-07 12:57
2008.05.25
Загрузка kernel mode драйвера из памяти


15-1207718318
@!!ex
2008-04-09 09:18
2008.05.25
Утилита для синхронизации.


15-1207751426
@!!ex
2008-04-09 18:30
2008.05.25
Сайта http://developer.3dlabs.com/ больше не существует


2-1209758552
KiLLiR
2008-05-03 00:02
2008.05.25
Цвет текста в Edit е со свойством Enabled=False





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский