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

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

Код ошибки Интерпретация

E_CLINT_BOR Недопустимое основание в str2clint_l()

E_CL1NT_DBZ Деление на нуль

E_CLINT_MAL Ошибка при распределении ресурсов памяти

E_CLINT_MOD Четные модули в умножении по Монтгомери

E_CLINT_NOR Регистр недоступен

E_CLINT_NPT Пустой указатель в качестве аргумента

E_CLINT_OFL Переполнение

E clint ufl Потеря значимости

1. Операции ввода, вывода и преобразования больших чисел

    1. Инициализация переменных типа CLINT

Ввод начальных значений (инициализация) в переменную типа CLINT не может быть осуществлен операцией присваивания , а должен производится только одной из следующих функций преобразования:

  • числа типа ULONG(unsigned long unt) в CLINT

  • строки символов в CLINT

  • вектора ,элементами которого являются байты, в CLINT

Преобразование значения типа ULONG в CLINT-объект

Синтаксис: void ul2clint_l (CLINT num, ULONG ul);

Вход: ul (преобразуемое значение)

Выход: num (выходной CLINT-объект)

Преобразование строки в CLINT-объект

Синтаксис: int str2clint_l (CLINT n, char *str, USHORT base);

Вход: str -указатель на последовательность типа char

base -основание числового представления строки,

2 <= base<=16

Выход: n (выходной CLINT-объект)

Возврат: E_CLINT_OK, если все в порядке

E_CLINT_BOR, если base < 2 или base > 16

E_CLINT_OFL в случае переполнения

E_CLINT_NPT, если в str передан пустой указатель

Преобразование байтового вектора в CLINT-объект

Синтаксис: int byte2clint_l (CLINT n, UCHAR* bytstr, int len);

Вход: bytestr (указатель на последовательность типа UCHAR) len (длина байтового вектора)

Выход: n_l (выходной CLINT-объект)

Возврат: E_CLINT_OK, если все в порядке

E_CLINT_OFL в случае переполнения

E_CLINT_NPT, если bytstr пустой указатель

#include <FLINT.h>

#include <stdio.h>

#include <conio.h>

#define ClintToStr xclint2str_l // Переопределение функции xclint2str_l

int main(int argc, char* argv[])

{

CLINT a1,a2,a3; // Объявление объектов CLINT

// Инициализация объекта CLINT строкой цифр

char *s1 =new char; s1="9293490"; // Строка 10-х цифр

printf("S1= %s\n",s1);

str2clint_l (a1,s1,10); //Инициализация строкой

printf("BIN %s\n",ClintToStr(a1,2,1));

printf("OCT %s\n",ClintToStr(a1,8,1));

printf("DEC %s\n",ClintToStr(a1,10,1));

printf("HEX %s\n",ClintToStr(a1,16,1));

char *s2 =new char;s2="0FAA56CD"; // Строка 16-х цифр

printf("\nS2= %s\n",s2);

str2clint_l (a2,s2,16); //Инициализация строкой

printf("BIN %s\n",ClintToStr(a2,2,1));

printf("OCT %s\n",ClintToStr(a2,8,1));

printf("DEC %s\n",ClintToStr(a2,10,1));

printf("HEX %s\n",ClintToStr(a2,16,1));

char *s3 =new char;s3="00101010"; // Строка 2-х цифр

printf("\nS3= %s\n",s3);

str2clint_l (a3,s3,2); //Инициализация строкой

printf("BIN %s\n",ClintToStr(a3,2,1));

printf("OCT %s\n",ClintToStr(a3,8,1));

printf("DEC %s\n",ClintToStr(a3,10,1));

printf("HEX %s\n",ClintToStr(a3,16,1));

// Инициализация объекта CLINT числом

ULONG b=19000; // Переменная типа ULONG(unsigned long int)

u2clint_l(a1,b);

printf("\n a1 <- b= %s\n",ClintToStr(a1,10,1));

// Инициализация объекта CLINT массивом байт

unsigned char B[]={0,1,5}; byte2clint_l(a1,B,3);

printf("\n a1 <-[B] DEC = %s\n",ClintToStr(a1,10,1));

return 0;

}

Рисунок Применение функции ввода-вывода

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