Примеры выполнения модульных операций
⇐ ПредыдущаяСтр 2 из 2 Проверка сравнимости по модулю т Синтаксис: int mequ_l (CLINT a, CLINT b, CLINT m); Вход: a, b (операнды), m (модуль) Возврат: 1, если (a ≡ b mod m) 0 в противном случае
Модульное сложение Синтаксис: int madd_l (CLINT a, CLINT b, CLINT c, CLINT m); Вход: a, b (слагаемые), m (модуль) Выход: c (остаток) Возврат: E_CLINT_OK. если все в порядке E_CLINT_DBZ в случае деления на 0
Модульное сложение переменных типа CLINT и USHORT Синтаксис: int umadd_l (CLINT a, USHORT b, CLINT c, CLINT m); Вход: a, b (слагаемые), m (модуль) Выход: c (остаток) Возврат: E_CLINT_OK. если все в порядке E_CLINT_DBZ в случае деления на 0
Модульное вычитание Синтаксис: int msub_l (CLINT a. CLINT b, CLINT c, CLINT m); Вход: a (уменьшаемое), b (вычитаемое), m (модуль) Выход: c (остаток) Возврат: E_CLINT_OK, если все в порядке E_CLINT_DBZ в случае деления на О
Модульное умножение Синтаксис: int mmul_l (CLINT a, CLINT b. CLINT c, CLINT m); Вход: a, b (сомножители), m (модуль) Выход: c (остаток) Возврат: E_CLINT_OK, если все в порядке E_CLINT_DBZ в случае деления на 0
Модульное возведение в квадрат Синтаксис: int msqr_l (CLINT a, CLINT c, CLINT m); Вход: a (множитель), m (модуль) Выход: c (остаток) Возврат: E_CLINT_OK, если все в порядке E_CLINT_DBZ в случае деления на 0
Программная реализация #pragma hdrstop #include <FLINT.h> #include <stdio.h> #include <conio.h> #include <math.h> #define ClintToStr xclint2str_l // Переопределение функции xclint2str_l int main(int argc, char* argv[]) { CLINT a,b,c,m; // Обьявление объектов CLINT
// Инициализаация объектов CLINT строкой 16-х цифр
char *sa =new char;sa="11"; str2clint_l (a,sa,10);//Инициализация строкой char *sb =new char;sb="31"; str2clint_l (b,sb,10);//Инициализация строкой char *sm =new char;sm="12"; str2clint_l (m,sm,10);//Инициализация строкой printf("a=%s\n",ClintToStr(a,10,1)); printf("b=%s\n",ClintToStr(b,10,1)); printf("m=%s\n",ClintToStr(m,10,1));
// Проверка сравнимости по модулю m if(mequ_l (a, b, m)) printf("a = b mod m= %s\n","YES"); else printf("a = b mod m= %s\n","NO");
//Сложение по модулю m int Err=madd_l (a, b, c, m); printf("Err= %d c=a+b mod m= %s\n",Err,ClintToStr(c,10,1));
// Модульное вычитание Err= msub_l (a, b, c, m); printf("Err= %d c=a-b mod m= %s\n",Err,ClintToStr(c,10,1));
Модульное деление (вычет по модулю) mod_l (a, b, c,m); printf(" Err= %d c=a/b mod a= %s\n",Err,ClintToStr(tem,10,1));
//Модульное деление переменной типа CLINT на переменную типа USHORT //(вычет по модулю) US=pow(2,5); USHORT F= umod_l (a, US); printf(" F=a mod (2*2*2*2*2) = %d\n",F); getch(); return 0; }
// Модульное умножение Err= mmul_l (a, b, c, m); printf("Err= %d c=a x b mod m= %s\n",Err,ClintToStr(c,10,1));
// Модульное возведение в квадрат Err= msqr_l(a, c, m); printf("Err= %d c=sqr(a)mod m= %s\n",Err,ClintToStr(c,10,1)); getch(); return 0;} Варианты заданий
Отчет должен содержать:
1. Hаименование и номер лабораторной работы; 2. Условие задачи; 3. Распечатка листинга программы; 4. Распечатка результатов выполнения задачи.
Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|