Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Примеры выполнения модульных операций




Проверка сравнимости по модулю т

Синтаксис: 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;}

Варианты заданий

№ п.п. Способ инициализации Длина Модульные операции
a b m a b m
  строкой Вектором байт ULONG       Проверка сравнимости по модулю m, модульное умножение, модульное возведение в квадрат, модульное деление
  Вектором байт Строкой Строкой       Сложение по модулю m, модульное возведение в квадрат, проверка сравнимости по модулю m, модульное вычитание
  ULONG ULONG Вектором байт       Модульное умножение, модульное возведение в квадрат модульное сложение переменных типа CLINT и USHORT, модульное деление
  Строкой Вектором байт Вектором байт       Модульное вычитание, модульное умножение, модульное деление переменной типа CLINT на перемен­ную типа USHORT, модульное сложение
  Строкой ULONG ULONG       Модульное деление переменной типа CLINT на переменную типа USHORT, модульное деление, модульное вычитание, модульное умножение
  Строкой Строкой Вектором байт       Модульное деление, сравнение по модулю m, сложение по модулю m, модульное вычитание
  Вектором байт Вектором байт ULONG       Сложение по модулю m, модульное умножение, модульное деление, проверка сравнимости по модулю m
  строкой Вектором байт ULONG       Модульное вычитание, модульное деление, модульное возведение в квадрат, сложение по модулю m  
  Вектором байт Строкой Строкой       Модульное деление переменной типа CLINT на перемен­ную типа USHORT, модульное возведение в квадрат, модульное вычитание, проверка сравнимости по модулю m  
  ULONG ULONG Вектором байт       Сравнение по модулю m, модульное сложение, модульное вычитание, модульное деление
  Строкой Вектором байт Вектором байт       Модульное возведение в квадрат, модульное деление, модульное умножение, модульное вычитание
  Строкой ULONG ULONG       Модульное сложение переменных типа CLINT и USHORT,модульное деление, модульное возведение в квадрат, сложение по модулю m
  Строкой Строкой Вектором байт       Модульное сложение переменных типа CLINT и USHORT, модульное вычитание, модульное деление, модульное вычитание
  Вектором байт Вектором байт ULONG       Модульное сложение, модульное умножение, модульное деление, модульное возведение в квадрат
  строкой Вектором байт ULONG       Модульное умножение, модульное деление переменной типа CLINT на перемен­ную типа USHORT, модульное вычитание, проверка сравнимости по модулю m
  Вектором байт Строкой Строкой       Проверка сравнимости по модулю m, модульное умножение, модульное деление переменной типа CLINT на перемен­ную типа USHORT, модульное вычитание
  ULONG ULONG Вектором байт       Модульное вычитание, модульное сложение, модульное деление, модульное возведение в квадрат
  Строкой Вектором байт Вектором байт       Модульное сложение переменных типа CLINT и USHORT, модульное деление,модульное возведение в квадрат модульное вычитание
  Строкой ULONG ULONG       Модульное вычитание, модульное деление, модульное умножение, проверка сравнимости по модулю m
  Строкой Строкой Вектором байт       Модульное возведение в квадрат, сравнение по модулю m,модульное деление переменной типа CLINT на перемен­ную типа USHOR, сложение по модулю m  

 

Отчет должен содержать:

1. Hаименование и номер лабораторной работы;

2. Условие задачи;

3. Распечатка листинга программы;

4. Распечатка результатов выполнения задачи.

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...