1.         Функция реализующая нахождение модуля числа типа long

long Modul(long a)

{

if (a<0)

return (-a);

else

return (a);

}

Если функция получила отрицательное число, то она возвращает число с противоположным знаком, в противном случае само число.

Входные данные – число типа long.

Выходные данные – число типа long.

2.         Функция проверки возможности выхода за диапазон типа long при перемножении корней генерируемого полинома.

int provper(long a, long b)

{

if(b==0 || a==0)

return(1);

else

if(Modul(a)<MAXLONG/Modul(b))

return(1);

else

return(0);

}

Если одно из переданных функции значений равно нулю, то функция возвращает единицу, иначе, если абсолютное значение одного из полученных функций значений меньше, чем число равное частному от деления максимального значения типа long на другое введенное значение, т.е., если при перемножении полученных функцией значений, их произведение не выходит за диапазон типа long, то функция возвращает единицу, в противном случае – ноль.

Входные данные – два числа типа long.

Выходные данные – число типа int (единица или ноль).

3.         Функция проверки выхода за диапазон при сложении коэффициентов генерируемого полинома при одинаковых степенях переменного.

int provsum(long a, long b)

{

if(Modul(a)<(MAXLONG-Modul(b)))

return(1);

else

return(0);

}

Если одно из переданных функции значений меньше, чем разность максимального значения типа long и другого переданного значения, то функция возвращает единицу, в противном случае – ноль.

Входные данные – два числа типа long.

Выходные данные – число типа int (единица или ноль).

4.         Функция, перемножающая два многочлена.

void peremnoz (long *a, int n, long *b, long *c)

{

long z=0;

int i,j;

for ( i=0; i<n;i++)

for( j=0; j<2; j++)

{

if(provper(*(a+i),*(b+j))==1)

z=(*(a+i)*(*(b+j)));

else

*(c+(i+j))=MAXLONG;

if(provsum(z,*(c+(i+j)))==1)

*(c+(i+j))+=z;

else

*(c+(i+j))=MAXLONG;

}

}

В функции инициализируются два цикла, один из которых вложен в другой. Внешний пробегает по всем коэффициентам первого многочлена, участвующего в перемножении (в программе реализуется в виде массива a, а коэффициенты многочлена – элементы массива а), внутренний – по коэффициентам второго многочлена (в программе – в виде массива b, коэффициенты многочлена – элементы массива b). Если перемножение коэффициентов (элементов массивов) возможно (начинает работу функция int provper(long a, long b)), т.е. не произойдет выход за диапазон типа long, то результат перемножения записываем в переменную z, в противном случае, соответствующему коэффициенту результирующего многочлена (в программе – массив c, коэффициенты многочлена – элементы массива) присваивается максимальное значение (MAXLONG) типа long и внутренний цикл прекращает свою работу. Если произведение коэффициентов массива не вышло за диапазон типа long, то проверяем: не произойдет ли выход за диапазон типа long при сложении получившегося значения (храниться в переменной z) с коэффициентом результирующего многочлена (элемент массива c) (начинает работу функция int provsum(long a, long b)); если сложение возможно, то к соответствующему коэффициенту результирующего многочлена (элемент массива c) прибавляется результат перемножения коэффициентов первых двух многочленов (значение переменной z), иначе, соответствующему коэффициенту результирующего многочлена присваивается максимальное значение (MAXLONG) типа long.

Работа функции перемножения основана на свойствах полинома (см. пункт 1.1.3).

Входные данные: три указателя типа long (на массивы, участвующие в перемножении, и на результирующий массив), число типа int (количество элементов первого массива).

5.         Функция проверки нахождения коэффициентов генерируемого полинома в диапазоне используемого типа.

int prov(long *a, int n)

{

int i, y=0;

for(i=0;i<n+1;i++)

if(Modul(*(a+i))==MAXLONG)y++;

return (y);

}

В функции инициализируется цикл (количество итераций равно степени генерируемого многочлена, увеличенной на единицу). Производим движение по коэффициентам генерируемого многочлена (элементам массива a); если абсолютное значение какого-либо коэффициента генерируемого многочлена равно максимальному значению (MAXLONG) типа long, то значение флага (переменной y), изначально равное нулю, увеличиваем на единицу.

Входные данные: указатель типа long (на массив a), число типа int (степень генерируемого полинома, увеличенная на единицу).

Выходные данные: число типа int.


Информация о работе «Генерация полиномов»
Раздел: Информатика, программирование
Количество знаков с пробелами: 34137
Количество таблиц: 1
Количество изображений: 0

Похожие работы

Скачать
109435
6
96

... типа MESH. 13.6. Графика пакета plots 13.6.1. Общая характеристика пакета plots Пакет plots содержит почти полсотни графических функции, существенно расширяющих возможности графики системы Maple V. В реализации R4 этот пакет содержит следующие функции: ——————————— animate Создает мультипликацию 2D графиков функций. animated Создает мультипликацию 3D графиков функции. changecoords ...

Скачать
138956
15
3

... Еловка ТМН-2500/35 ±6×1,5% Ужурсовхоз ТМН-4000/35 ±6×1,5% 2. Характеристика задачи расчета, анализа и оптимизации режимов РЭС 110-35 кВ по напряжению, реактивной мощности и коэффициентам трансформации Питающие электрические сети напряжением 110 кВ, ...

Скачать
203045
16
63

... мальне значення показникунадійності, при якому приймається рішення про орєінтованийзвязок назвем порогом показника надійності і позначимо (). Для можливості порівняння результатів у різних парах змінних в одній задачі системного синтезу корисно ввести відносний показник надійності. Відносним показником надійності ηij приняття рішення про напрям звязку між змінними xj → xi (стрілка в ...

Скачать
118979
22
26

... luc – программа используется для разложения матрицы на треугольные сомножители; rluc – программа, которая отвечает за решение системы уравнений. 4. Разработка адаптивной системы управления режимами электропотребления 4.1 Функции автоматизированной системы Сбор, накопление и передача информации, характеризующей режим электропотребления комбината (информация о нагрузках). Сбор, накопление ...

0 комментариев


Наверх