Сайт о программировании, математике и моделировании
Записи с метками С++
Задача про два отрезка на прямой и их общие точки
17 Февраль
Постановка задачи:
Два отрезка на прямой заданы координатами своих концов. Определить, имеют ли эти отрезки общие точки, и если имеют, то длину общей части. Замечание. Необходимо рассмотреть различные случаи взаимной ориентации отрезков. Тестирование должно предусмотреть все такие ситуации.
Решение:
Пусть А и В – два отрезка, с координатами своих концов [а1, а2] и [b1, b2] соответственно. a1, b1 –левые координаты, a2, b2 – правые координаты отрезков А и В. Читать дальше >
Что такое язык ассемблера?
17 Январь
Язык ассемблера позволяет программисту пользоваться текстовыми мнемоническими (то есть легко запоминаемыми человеком) кодами, по своему усмотрению присваивать символические имена регистрам компьютера и памяти, а также задавать удобные для себя способы адресации. Кроме того, он позволяет использовать различные системы счисления (например, десятичную или шестнадцатеричную) для представления числовых констант, использовать в программе комментарии и др. Читать дальше >
Вычисление длины окружности и площади круга одного и того же радиуса R
3 Январь
Постановка задачи:
Вычислить длину окружности и площадь круга одного и того же радиуса R. И площадь вписанного в эту окружность равнобедренного треугольника. Читать дальше >
Язык Ассемблер
28 Декабрь
Ассемблер (от англ. assemble — собирать) — компилятор с языка ассемблера в команды машинного языка. Русифицированное название — мнемокод. Предназначен для представления в удобном (мнемоническом) виде машинные коды команд. Обеспечивает наиболее эффективное использование ресурсов системы (процессор, память, периферия). Используется в «узких» местах — требуется большое быстродействие, ограничение по размеру оперативной памяти и другие. Ассемблером также называют иногда саму систему команд центрального процессора. Читать дальше >
Анализ существующих средств создания многоагентных систем (МАС)
21 Ноябрь
Традиционно под агентом понимается некоторая автономная сущность в составе информационной системы, решающая определенную подзадачу этой системы. Агент представляет собой самостоятельную программную реализацию, имеющую возможность принимать воздействие из внешнего мира, определять свою реакцию на это воздействие и осуществлять эту реакцию. В одиночку агенты не смогут решить всех задач поставленных перед ними, потому особую ценность имеют многоагентные системы — системы, в которых предусмотрено взаимодействие агентов, каждый из которых решает задачи необходимые для выполнения поставленной цели.
Базовым инструментом разработки многоагентных систем, позволяющим создавать, уничтожать, интерпретировать, запускать и перемещать агентов является агентная платформа. Основными функциями агентных платформ являются: Читать дальше >
Алгоритм быстрого дискретно-косинусного преобразования
4 Ноябрь
void dct(const floatImage& src, floatImage& dest)
{
dest.reset(src.size());
unsigned int i,j,k;
real sum;
floatImage horizontal(src.iwidth(), src.iheight());
for (j = 0; j < src.iheight(); j++)
for (i = 0; i < src.iwidth(); i++)
{
sum = 0.0;
for (k = 0; k < src.iwidth(); k++)
sum += src(k,j)*
cos(real(2*k+1)*PI*real(i)/(real(2*src.iwidth())));
horizontal(i,j) = sum;
}
for (i = 0; i < src.iwidth(); i++)
for (j = 0; j < src.iheight(); j++)
{
sum = 0.0;
for (k = 0; k < src.iheight(); k++)
sum += horizontal(i,k)*
cos(real(2*k+1)*PI*real(j)/(real(2*src.iheight())));
dest(i,j) =
alpha(i,src.iwidth())*alpha(j,src.iheight())*sum;
}
}
void idct(const floatImage& src, floatImage& dest)
{
dest.reset(src.size());
unsigned int i,j,k;
real sum;
Работа со строками на С++
1 Ноябрь
Постановка задачи:
Написать программу, демонстрирующую работу с объектами двух типов: SymbString (символьная строка) DecString (десятичная строка). Каждый объект должен иметь идентификатор(в виде произвольной строки символов) и одно или несколько полей для хранения состояния(текущего значения) объекта.
Клиенту (функции main) должны быть доступны следующие основные операции:
- Создать объект
- Удалить объект
- Показать значение объекта Читать дальше >
Алгоритмы встраивания и извлечения по методу Куттера-Джордана
30 Июль
void JpegFile::read (BinaryIO* io)
{
CvrStgFile::read (io);
FILE *infile = NULL ;
infile = io->getStream() ;
rewind (infile) ;
struct jpeg_error_mgr errmgr ;
DeCInfo.err = jpeg_std_error (&errmgr) ;
jpeg_create_decompress (&DeCInfo) ;
jpeg_stdio_src (&DeCInfo, infile) ;
jpeg_read_header (&DeCInfo, TRUE) ;
Алгоритм быстрого двумерного вейвлет-преобразования
20 Июль
FWT2D::FWT2D(const wchar_t* fname, const float* tH, unsigned int thL, int thZ,
const float* tG, unsigned int tgL, int tgZ,
const float* H, unsigned int hL, int hZ,
const float* G, unsigned int gL, int gZ) : BaseFWT2D(fname, tH, thL, thZ, tG, tgL, tgZ, H, hL, hZ, G, gL, gZ)
{
}
void FWT2D::transrows(char** dest, char** sour, unsigned int w, unsigned int h) const
{
int n;
float s, d;
unsigned int w2 = w / 2;
const vec1D& tH = gettH();
const vec1D& tG = gettG();
for (unsigned int y = 0; y < h; y++) {
for (unsigned int k = 0; k < w2; k++) {
s = 0.0f;
d = 0.0f;
for (int m = tH.first(); m <= tH.last(); m++) {
n = 2 * k + m;
if (n < 0) n = 0 — n;
if (n >= (int)w) n -= 2 * (1 + n — w);
s += tH[m] * float(sour[y][n]);
}
for (int m = tG.first(); m <= tG.last(); m++) {
n = 2 * k + m;
if (n < 0) n = 0 — n;
if (n >= (int)w) n -= 2 * (1 + n — w);
d += tG[m] * float(sour[y][n]);
}
dest[y][k] = mmxround(s);
dest[y][k+w2] = mmxroundTH(d);
}
}
}
void FWT2D::transcols(char** dest, char** sour, unsigned int w, unsigned int h) const
{
int n;
float s, d;
unsigned int h2 = h / 2;
const vec1D& tH = gettH();
const vec1D& tG = gettG(); Читать дальше >
Алгоритмы встраивания и извлечения информации по методу замены вейвлет-коэффициентов
17 Июль
void JpegFile::read (BinaryIO* io)
{
CvrStgFile::read (io);
FILE *infile = NULL ;
infile = io->getStream() ;
rewind (infile) ;
struct jpeg_error_mgr errmgr ;
DeCInfo.err = jpeg_std_error (&errmgr) ;
jpeg_create_decompress (&DeCInfo) ;
jpeg_stdio_src (&DeCInfo, infile) ;
jpeg_read_header (&DeCInfo, TRUE) ; Читать дальше >