Форум программистов, компьютерный форум CyberForum.ru

Длинная целочисленная арифметика на c++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не находин хендел http://www.cyberforum.ru/cpp-beginners/thread302828.html
сдрасте есть код,который не работает. также есть окно с титлом Garena там же есть класс RichEdit20W по сути должно работать . А неработает if(FindWindowEx(NULL,NULL,L"RichEdit20W",L"Garena")!=NULL) ui->label->setText("SS"); FindWindowEx(NULL,NULL,L"RichEdit20W",L"Garena") вазращает нуль
C++ Run-Time Check Failure #2 - Stack around the variable 'task' was corrupted. void Dispatch(){ if (gRunTask.entry != NULL){ if (setjmp(gE) != 0) return; *gRunTask.env = *gE; gRunTask.jmp = true; } if(gRunTask.entry == NULL){ if(gReadyTask.begin() == gReadyTask.end()){ http://www.cyberforum.ru/cpp-beginners/thread302457.html
Код потребляет очень много памяти. Подскажите как оптимизировать? C++
Есть код на C++ (компилируется под GCC) - подсчёт коэффициентов осцилляторной системы методом Рунге-Кутта (метод в простейшем случае). Проблема в том, что секунд за 10, он успевает занять метров 600 оперативки, что она и заканчивается. Я к сожалению, на "вы" с С++, не очень часто приходится с ним сталкиваться, вот и не получается оптимизировать его, чтобы как-то высвобождать выделяемую память. ...
C++ C++ паттерны, архивация файлов
Начал делать реализацию паттерна Strategy, короче если кто-то может завершить код помогите. А вообще вопрос стоит так: "как запустить архивацию в С++?". Если кто может помогите. #include <iostream> #include <string> #include <> // Èåðàðõèÿ êëàññîâ, îïðåäåëÿþùàÿ àëãîðèòìû ñæàòèÿ ôàéëîâ class Compression { public: virtual ~Compression() {}
C++ Удаление средней буквы из нечетного слова http://www.cyberforum.ru/cpp-beginners/thread302189.html
помогите пожалуйста составьте программу с кодом на С, просто я сам нешарю в строках. Условие:Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 строчных русских букв; между соседними словами- запятая, за последним словом- точка. Напечатать все слова последовательности, которые отличены от последнего слова, предварительно преобразовав каждое из них по следующему...
C++ Вычеркивание i строки j столбца в матрице #include "stdafx.h" #include "conio.h" #include "math.h" #include "time.h" #include <stdlib.h> #include <locale.h> int main() подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
24.05.2011, 07:37     Длинная целочисленная арифметика на c++
Я в курсе существования готовой длинной арифметики, но в этой, например, теме есть такие посты:
Цитата Сообщение от fasked Посмотреть сообщение
Все это понятно, я и сам могу перечислить еще как минимум три подобных пакета. Однако, если требуется собственная реализация, то они не помогут. Да и "тупое" их использование мало покажет основные принципы.
,
Цитата Сообщение от fasked Посмотреть сообщение
Я же сказал, что в первую очередь делаю это для себя. А если уж кому будет не лень, то разобраться в моей библиотеке будет куда проще, чем в том же GMP. К тому же я все таки надеюсь на какую-то помощь. Потому что библиотеки как таковой еще не существует.
Здесь будет аналог той темы, но на c++. Внутреняя реализация - свой union трёх массивов: массива байт, массива двубайтных целых и массива четырёхбайтных целых, причём, общий блок памяти занимают только сами массивы, но указатели на них располагаются в раздельных ячейках и просто имеют совпадающие значения. Разрядность 1024 байта.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class LongInteger
{
 protected: 
  uint8_t   Bytes[1024];
  uint16_t *Words;
  uint32_t *DoubleWords;
 public: 
  LongInteger ();
};
LongInteger::LongInteger ()
{
 Words      =(uint16_t*)(Bytes);
 DoubleWords=(uint32_t*)(Bytes);
}
Добавлено через 11 минут
Теперь такая проблема: есть разные порядки байт и слов. Порядков байт в слове существует два: младший в млашем и старший в младшем, то есть если в том порядке, в каком в памяти валяются байты, записать их номера, то может полчисться и 01 и 10. Точно также есть два порядка слов в двойном слове и не всегда он совпадает с порядком байт. При совпадении получаем порядок байт в двойном слове или 0123, или 3210 (те же младший в младшем и старшщший в младшем), но при несовпадении получаются 1032 и 2301, в этих порядках младшие и старшие байты находятся рядом и в середине. Передложите тест порядка байт и слов и внутренний формат для хранения его результатов. Кстати, есть ли вообще несуразины типа, например, 0321?

Добавлено через 12 минут
По критикуйте такое решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class LongInteger
{
 protected:
  uint32_t  Order; // Порядок байт в двойном слове: 0x03020100=3210, 0x02030001=2301, 0x01000302=1032, 0x00010203=0123
  uint8_t   Bytes[1024];
  uint16_t *Words;
  uint32_t *DoubleWords;
 public: 
  LongInteger ();
};
LongInteger::LongInteger ()
{
 uint8_t *OderByBytes; 
 OderByBytes   =Oder;
 OderByBytes[0]=3; // Для теста порядка в поле Order побайтно пишется значение 0x03020100.
 OderByBytes[1]=2; // Для теста порядка в поле Order побайтно пишется значение 0x03020100.
 OderByBytes[2]=1; // Для теста порядка в поле Order побайтно пишется значение 0x03020100.
 OderByBytes[3]=0; // Для теста порядка в поле Order побайтно пишется значение 0x03020100.
 Words         =(uint16_t*)(Bytes);
 DoubleWords   =(uint32_t*)(Bytes); 
}
. Сам вижу, что для условной компиляции это не пойдёт. С этим можно бороться? Как?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru