Курсовая работа: Генерация полиномов
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). Если перемножение коэффициентов (элементов массивов) возможно (начинает работу функция intprovper(longa, longb)), т.е. не произойдет выход за диапазон типа long, то результат перемножения записываем в переменную z, в противном случае, соответствующему коэффициенту результирующего многочлена (в программе – массив c, коэффициенты многочлена – элементы массива) присваивается максимальное значение (MAXLONG) типа longи внутренний цикл прекращает свою работу. Если произведение коэффициентов массива не вышло за диапазон типа long, то проверяем: не произойдет ли выход за диапазон типа long при сложении получившегося значения (храниться в переменной z) с коэффициентом результирующего многочлена (элемент массива c) (начинает работу функция intprovsum(longa, longb)); если сложение возможно, то к соответствующему коэффициенту результирующего многочлена (элемент массива 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.
6. Часть программы, переводящая символ, являющийся цифрой, в число.
{
w=s[i]-'0';