Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab2.doc
Скачиваний:
12
Добавлен:
06.06.2015
Размер:
110.59 Кб
Скачать

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;}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]