![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#461
|
|
![]() 😸🧡✊✌️ Сообщений: 16 400 Спасибо сказали: 3242 раза ![]() |
Быстрое вычисление квадратного корня.
Программа вводит целое число value, зачем вычисляет целую часть его квадратного корня root, а также сухой остаток числа rest=value-root*root и выводит их. CODE // assumed that sizeof(uint)==4
// and byte is 8 bits #include <iostream> using namespace std; typedef unsigned uint; uint sqrt(uint value, uint &rest) { uint root=0; rest=0; for(uint i=0; i<16; ++i){ rest=(rest<<2)|(value>>30)&3; value<<=2; (root<<=1)|=1; if(root<=rest){ rest-=root; ++root; } else{ --root; } } return root>>1; } int main() { unsigned value,rest; cin>>value; cout<<"root of "<<value<<" is "<<sqrt(value,rest); cout<<". rest="<<rest<<endl; return 0; } -------------------- Я слежу за тобой!
![]() ![]() Цитата Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел. Борис "Бонус" Репетур, "От винта!", выпуск 38. |
|
|
![]()
Сообщение
#462
|
|
VCMI developer Сообщений: 377 Спасибо сказали: 690 раз ![]() |
// assumed that sizeof(uint)==4 Мой больной мозг потребовал исправить это досадное недоразумение. CODE #include <iostream>
#include <type_traits> #include <cassert> #include <cstdint> using namespace std; template<typename numeric> numeric sqrt(numeric value, numeric &rest) { typedef unsigned uint; static_assert(std::is_integral<numeric>::value, "This function will only work with integral types!"); static_assert(std::is_unsigned<numeric>::value, "This function will only work with unsigned types!"); constexpr uint bits = sizeof(numeric) * 8; numeric root=0; rest=0; for(uint i = 0; i < bits/2; ++i) { rest= rest << 2 | value >> (bits - 2); value <<= 2; root <<= 1; root |= 1; if(root<=rest) { rest-=root; ++root; } else { --root; } } return root>>1; } template<typename numeric> numeric sqrt(numeric value) { numeric rest; return sqrt(value, rest); } void test() { assert(sqrt<uint8_t>((200)) == 14); assert(sqrt<uint16_t>(9999) == 99); assert(sqrt<uint16_t>(10000) == 100); assert(sqrt<uint16_t>(10001) == 100); assert(sqrt<uint32_t>(1000*1000 + 500) == 1000); assert(sqrt<uint64_t>(1000ll*1000*1000*1000) == 1000*1000); std::cout << "Tests passed!\n"; } int main() { test(); } -------------------- Слава Україні!
|
|
|
![]()
Сообщение
#463
|
|
![]() 😸🧡✊✌️ Сообщений: 16 400 Спасибо сказали: 3242 раза ![]() |
Увы, мой MSVC6 не имеет в комплекте таких несомненно полезных файлов, как 'type_traits' и 'cstdint'.
-------------------- Я слежу за тобой!
![]() ![]() Цитата Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел. Борис "Бонус" Репетур, "От винта!", выпуск 38. |
|
|
![]()
Сообщение
#464
|
|
VCMI developer Сообщений: 377 Спасибо сказали: 690 раз ![]() |
Есть такое. У студии все очень печально с поддержкой c++11: http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport
В принципе если повыкидывать проверки различные - должно заработать и там. А в этом виде все работает отлично в моих gcc и clang. -------------------- Слава Україні!
|
|
|
![]()
Сообщение
#465
|
|
![]() 😸🧡✊✌️ Сообщений: 16 400 Спасибо сказали: 3242 раза ![]() |
Кстати, основная идея, пока не реализованная — расчет дробной части этого самого корня для использования в качестве гаммы для шифрования. Просто квадратный корень — простейшее иррацианальное число (т.е., практически случайное), которое генерируется на базе простенького и короткого ключа.
-------------------- Я слежу за тобой!
![]() ![]() Цитата Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел. Борис "Бонус" Репетур, "От винта!", выпуск 38. |
|
|
![]()
Сообщение
#466
|
|
![]() Зануда Сообщений: 2 237 Спасибо сказали: 2894 раза ![]() |
А где голосовалка?
![]() |
|
|
![]()
Сообщение
#467
|
|
![]() Geoff Snock | 茶スノック Сообщений: 533 Спасибо сказали: 248 раз ![]() |
Кончилась давно.
-------------------- гномов сопротивляются заклинанию!
Цитата Фейспалмы свои себе в сракотан засуньте, если больше сказать нечего. |
|
|
![]()
Сообщение
#468
|
|
![]() Immortal Сообщений: 3 301 Спасибо сказали: 2643 раза ![]() |
Кто нормально знаком со scheme (racket) ?
Нужна помощь) -------------------- Удалено Администрацией. Браузеры жаловались на вредоносное ПО.
Ссылка на оригинальное изображение: http://herоeslibrary.nеt/Site_images/admin.jpg Ссылка на сайт по нажатию баннера: http://herоeslibrary.nеt (ссылки содержат кириллические символы вместо оригинальных) Видишь бяку, - упрости! (с) кто-то из выдающихся математиков) Учи матан & Сходи с ума (с) архидедус |
|
|
![]()
Сообщение
#469
|
|
![]() Immortal Сообщений: 3 301 Спасибо сказали: 2643 раза ![]() |
Вот этот зверь кому интересно:
Код #lang scheme (define (fsum n) (define (step sum cur) (if (= cur n) sum (step (if (= 0 (remainder n cur) ) (+ sum cur) (+ sum 0)) (+ cur 1)))) (step 0 1)) display (fsum 10) Выводит сумму всех делителей не включая само число. -------------------- Удалено Администрацией. Браузеры жаловались на вредоносное ПО.
Ссылка на оригинальное изображение: http://herоeslibrary.nеt/Site_images/admin.jpg Ссылка на сайт по нажатию баннера: http://herоeslibrary.nеt (ссылки содержат кириллические символы вместо оригинальных) Видишь бяку, - упрости! (с) кто-то из выдающихся математиков) Учи матан & Сходи с ума (с) архидедус |
|
|
![]()
Сообщение
#470
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
эти лиспообразные языки скоро захватят мир
|
|
|
![]()
Сообщение
#471
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20596 раз ![]() |
Доо, они ждали этого долгие полвека.
|
|
|
![]()
Сообщение
#472
|
|
![]() Щирий українець Сообщений: 1 456 Спасибо сказали: 3026 раз ![]() |
Не захватят. Из-за того, что визуально трудновоспринимаемы. Останутся уделом гиков.
Кто захватит - так это JS. Код function fsum(n){ function step(sum, cur){ if (cur == n) return sum; else { if(n % cur){ return step (sum, cur+1); }else{ return step (sum+cur, cur+1) } } } return step(0,1); } alert(fsum(32)); ну или при желании можно сократить до трудночитаемого Код function fsum(n){return function step(sum, cur){return (cur == n)? sum: step(sum + (n % cur? 0 : cur), cur+1);}(0,1);}
alert(fsum(32)); |
|
|
![]()
Сообщение
#473
|
|
![]() Immortal Сообщений: 3 301 Спасибо сказали: 2643 раза ![]() |
вопрос такой:
есть некоторая программа на scheme, которая обрабатывает данные из файла и результат записывает в тот же файл. Также есть программа на с++, которая по данным из файла выводит на экран информацию (например пусть будет графическая оболочка морского боя, а в файле координаты кораблей и инфа подбит/жив) Как можно организовать подобный симбиоз? а если это в реальном времени, то вообще шикарно! -------------------- Удалено Администрацией. Браузеры жаловались на вредоносное ПО.
Ссылка на оригинальное изображение: http://herоeslibrary.nеt/Site_images/admin.jpg Ссылка на сайт по нажатию баннера: http://herоeslibrary.nеt (ссылки содержат кириллические символы вместо оригинальных) Видишь бяку, - упрости! (с) кто-то из выдающихся математиков) Учи матан & Сходи с ума (с) архидедус |
|
|
![]()
Сообщение
#474
|
|
![]() Geoff Snock | 茶スノック Сообщений: 533 Спасибо сказали: 248 раз ![]() |
-------------------- гномов сопротивляются заклинанию!
Цитата Фейспалмы свои себе в сракотан засуньте, если больше сказать нечего. |
|
|
![]()
Сообщение
#475
|
|
![]() Immortal Сообщений: 3 301 Спасибо сказали: 2643 раза ![]() |
Если и УИ писать на скиме, то зачем тогда Си вообще нужен?) Вся соль в том, чтобы движок на скиме, УИ на Сишке.
(я правильно понял что УИ = интерфейс?) ) -------------------- Удалено Администрацией. Браузеры жаловались на вредоносное ПО.
Ссылка на оригинальное изображение: http://herоeslibrary.nеt/Site_images/admin.jpg Ссылка на сайт по нажатию баннера: http://herоeslibrary.nеt (ссылки содержат кириллические символы вместо оригинальных) Видишь бяку, - упрости! (с) кто-то из выдающихся математиков) Учи матан & Сходи с ума (с) архидедус |
|
|
![]()
Сообщение
#476
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
|
|
|
![]()
Сообщение
#477
|
|
![]() Immortal Сообщений: 1 437 Спасибо сказали: 2149 раз ![]() |
кто-то сталкивался с импортом методов из длл на питоне, в частности методов с параметром или возвр. значением НЕ simple type, например struct (record в дельфах) и им подобным ?
|
|
|
![]()
Сообщение
#478
|
|
![]() допустим, мяў Сообщений: 24 070 Спасибо сказали: 13377 раз ![]() |
Американские программисты о русских программистах
Что думают зарубежные коллеги о наших программерах: Русские программисты никогда не читают руководств и редко пользуются online подсказкой - они легко понимают новые программы, потому как они ранее уже испробовали все программы подобного рода. Русские программисты никогда не платят за софт. Они или крэкают его или покупают wonderful CD (не стал переводить - так красивше) за 5 баксов с кучей софта. В любом крупном городе России. Русские программисты всегда используют самые последние разработки в программном обеспечении - самые последнии версии лучших программ - потому как не надо за них платить. Русские программисты очень любят поэкспериментировать с железом. Они разберут ваш компьютер и соберут его обратно в течение нескольких минут. Они помнят установки джамперов на большинстве материнских плат, винтах и других устройствах. Они никогда не забывают какие прерывания и адреса памяти используются в настоящее время в их компьютере. Русские программисты апгрейдят свой компьютер до тех пор, пока не останется никаких свободных прерываний, места для добавочной памяти или не останется ни одного свободного слота. Если они не могут апгрейдить дальше свой компьютер, они покупают еще один и соединяют оба сеткой. Русские программисты программируют на всех уровнях, и на процессорных кодах тоже, таблицы которых у них находятся постоянно на рабочем столе. Они помнят назубок список функций прерывания 21h. Русские программисты помнят всю раскладку английской и русской клавиатуры. Вы можете спросить посреди ночи, какая клавиша находится между A и L, вы будете удивлены ответом: "Какую из семи назвать?" Русские программисты ненавидят Майкрософт и Майкрософтовские программы, но используют их. Русские программисты предпочитают Borland, а Microsoft компиляторы инсталлируют только из-за того, что в них хороший help для Windows API. Русские программисты в Интернете чувствуют себя очень комфортно. Они предпочитают всегда быть online, хотя бы просто потому, что может срочно что-то понадобиться. Русские программисты всегда в настроении попрограммировать. Есть два вида Русских программистов - первые ненавидят Windows и программируют под Unix, вторые ненавидят Windows и программируют под них. Макинтошевские программисты - не настоящие программисты - им больше подходит название - "юзеры". Русские программисты нелюбят "кодировать" чью-то другую идею. Каждая программа пишется персонально. Русские программисты всегда имеют копии Doom, Duke Nukem и Quake на их жестком диске. Они могут играть ночи напролет по сетке в Deathmatch. Русские программисты никогда не используют джойстик. Клавиатура - вот главное оружие. Русские программисты никогда не сдаются. Они могут вылавливать баги из их программы забыв о сне и еде. Жены Русских программистов несчастны, потому как им не уделяется внимания, пока в доме есть хоть один компьютер. Русским программистам недоплачивают. Но и не существует суммы в мире, способной успокоить их желания. Начальники не любят Русских программистов. А кто любит умника, который все знает? Русские программисты не любят использовать шаблоны. Их программы - это индивидуально написанные произведения с большой долей импровизации. Причем, Русский программист старается во всю, чтобы побыстрее запустить программу и увидеть ее в работе. -------------------- Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская) |
|
|
![]()
Сообщение
#479
|
|
![]() Летсплеер Сообщений: 2 273 Спасибо сказали: 1844 раза ![]() |
Ребят, короче проблема у меня (точнее, не совсем у меня, но все же) возникла такая трабла: сам я Паскаль уже заметно подзабыл (щас-то мы уже Delphi проходим), а моему другу надо пару задач решить. Поможете две задачки написать?
1. Опр-ть макс. знач-ия для каждого столбца каждой из трех матриц А (4x5), B (5x7), C (3x4). 2. Изм-ть матрицу, прибавляя к каждому отр. элементу пред. элемент той же строки. К первому элементу, если он отрицателен, прибавить последний элемент данной строки. -------------------- Канал на YouTube - http://youtube.com/user/Septimus1993
Форум - http://septimus.5nx.ru Группа ВКонтакте - http://vk.com/septimus1993 |
|
|
![]()
Сообщение
#480
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
В порядке написания лабораторных работ за знакомую познакомилась с GNUтым Fortran'ом. Это - жесть. Кровельная. Луженая. Вот у кого стоит, если не сложно, проверьте на явные ошибки вывода (NaN, ******** и тому подобное):
Код !! Компилировать с ключом -cpp, пожалуйста.
Program Uno !! Essential ? !!{ -Preprocessing- #define ArrowTip() Trim(Span(IChar('-'), 4)) #define DelimOut() Out(Trim(Span(IChar('='), 61))) #define Equals(ValName, Value) ValName // " = " // FStr(Value) #define Fn17(X) Testfn(Real(X), m, NotSoJ, k) #define FStr(Value) Trim(StrF(Value)) #define IntStr(Value) Trim(Str(Value)) #define RequestVar(VarName, LB, HB) AskNumber("Укажите " // VarName // ": ", Real(LB), Real(HB)) #define Out(Text) Call TypeOut(Text // New_Line('A')) !!} !!{ -Structurization- Type :: PointF Real :: X, Y End Type PointF Parameter (JStart = 1) !! Исходное значение итератора. Character*(*),Parameter :: PosPrefix = ", достигнуто на узле #" !!} !!{ -Variables & Array- Real :: h=.0, hReal=.0, Accum=.0, Umax=.0, Umin=.0, Aver=.0, AverSqr=.0, PShare=.0, NShare=.0, Bias=.0, m=.0, NotSoJ= .0, k = .0 Integer :: A=0, B=0, N=0, J=0, Jmin=0, Jmax=0, Total=0 Type(PointF), Allocatable :: Graph(:) !!} !!{ Main code !! -Initialization- Out(ArrowTip()//"> Задание #1, вариант 17 <"//ArrowTip()// New_Line('A')) !! Заголовочная строка. m = RequestVar("коэфф-т m", 1, 4) !! Ввод коэффициента m. NotSoJ = RequestVar("коэфф-т j", 1, 4) !! Ввод коэффициента j. k = RequestVar("коэфф-т k", 1, 4) !! Ввод коэффициента k. A = 0; B = 1; N = RequestVar("количество исследуемых узлов на отрезке", 50, 1000) !! Первичные данные рассчетов. h = 0.0 + (b - a) / (N - 1.0) !! Коэффициент шага. Allocate (Graph(1:N)) !! Массив данных функции. hReal = Real(b - a) / N !! Коэффициент для рассчета удельных долей и среднеквадратичного. J = JStart; Jmax = J; Jmin = J; Total = N - JStart + 1 !! Итератор и производные. Accum = Fn17(a); Umax = Accum; Umin = Accum !! Выходные данные. !! -Data refactoring- Do J = JStart, N Graph(J)%X = A + (J - 1) * h !! Значение псевдоабсциссы. Graph(J)%Y = Fn17(Graph(J)%X) !! Значение ординаты. Aver = Aver + Graph(J)%Y !! Заранее считаем среднюю для оптимизации. End Do; Aver = Aver / Total !! Досчитываем среднюю. !! -Result calulation- Do J = JStart, N; Accum = Graph(J)%Y !! Считываем значение функции на указанной точке. If (Accum > Umax) Then; Umax = Accum; Jmax = J !! Проверяем максимальное значение. Else If (Accum < Umin) Then; Umin = Accum; Jmin = J !! ...и минимальное, да. End If; AverSqr = AverSqr + Accum * Accum !! Считаем сумму на средний квадрат Bias = Bias + (Accum - Aver) ** 2 !! Считаем квадратичное отклонение от среднего значения. If (Accum > 0) Then; PShare = PShare + hReal !! Считаем положительные значния. Else If (Accum < 0) Then; NShare = NShare + hReal !! Считаем отрицательные значения. End If; End Do; AverSqr = AverSqr / Total !! Досчитываем средний квадрат. !! -Final Output- DelimOut() Out(Equals("Максимальное значение фи-и",Umax) // PosPrefix // IntStr(JMax)) Out(Equals("Минимальное значение фи-и", Umin) // PosPrefix // IntStr(JMin)) Out(Equals("Среднее значение функции", Aver)) Out(Equals("Средний квадрат ф-ии", AverSqr)) Out(Equals("Среднеквадратичное значение", Sqrt(AverSqr))) Out(Equals("Доли положит. и отрицат. значений", PShare) // " / " // FStr(NShare)) Out(Equals("Среднеквадратичное отклонение от среднего", Sqrt(hReal * Bias))) !!} contains !! Почему здесь ? Да потому, что GNU - это лучшее, что было создано человечеством. !!{ -functionality- Real Function AskNumber(Request, LowBound, HiBound) !! Формализованный запрос числа. Character*(*) Request; Real LowBound, HiBound !! Подготавливаем запрос. Do; call TypeOut(Request); Read*,AskNumber !! Ожидаем ввод и после преоверяем результаты: If (AskNumber < LowBound .OR. AskNumber > HiBound) Then !! Проверяем границы ввода и если вдруг - рапортуем ошибку. Out("ERROR: предпол. значение между " // FStr(Lowbound) // " и " // FStr(HiBound) // " !") !! Error goes there. Else; Return; End If; End Do !! ...Иначе - мирно заканчиваем и выходим. End Function Real Function TestFn(X, m, j, k) !! Исследуемая функция. Real X, m, j, k; TestFN = ASin(X ** m) - (1 - X ** J) ** k End Function TestFn Subroutine TypeOut(Text) !! Абстрактизированный вывод текста. Character*(*) Text; Write(*,"(A)", advance="no")Text End Subroutine Character(255) Function Span(Char, Length) !! Компиляция последовательности из указанных символов. Integer Char, Length, I; Span = "";Do I=1, Length; Span(I:I+1) = AChar(Char); End Do End Function Character(15) Function StrF(Val) !! Фортран - это сила, друзья мои. Вы не знали ? Real, intent(in) :: Val; StrF = ""; write (StrF,"(F10.4)") Val; StrF = adjustl(StrF) End Function Character(15) Function Str(Val) !! ...Сила, вот как есть - сила. Integer, intent(in) :: Val; Str = ""; write (Str, *) Val; Str = adjustl(Str) End Function !!} End Program Uno -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]() ![]() |
Текстовая версия | Сейчас: 6 August 2025 - 15:35 |
Copyright by Алексей Крючков
![]() Programming by Degtyarev Dmitry |
|