Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Сложение длинных чисел





void numadd (number_t res, const number_t lhs, const number_t rhs)

{

int i = 0;

Флаг переноса

int c = 0;

Число с минимальной длинной

const int *sn = NUMLEN (lhs) < NUMLEN (rhs)? lhs: rhs;

Число с максимальной длиной

const int *ln = sn == lhs? rhs: lhs;

Складываем два числа

if (i < NUMLEN (sn)) {

++i;

res[i] = c + sn[i] + ln[i];

c = res[i] > NUMBASE? 1: 0;

if (c) res[i] -= NUMBASE;

}

Добавляем остаток от более длинного числа и перенос

if (i < NUMLEN (ln))

{

++i;

res[i] = c + ln[i];

c = res[i] > NUMBASE? 1: 0;

if (c) res[i] -= NUMBASE;

}

Учитываем последний перенос

if (c) res[++i] = c;

Сохраняем длину числа

res[0] = i;

}


Рассмотрим пример использования арифметики длинных чисел. Функция main() создает три переменные для хранения длинных чисел, инициализирует их значениями и выполняет операцию сложения, после чего печатает результат на экране. Программный код главной функции выглядет следуюшим образом:

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

{

int i;

number_t a, b, c;

numassgns (a, 1234567890);

numassgns (b, 1);

numadd (c, a, b);

numprint (c);

printf("\n\n... Press any key: ");

getch();

return 0;

}

Задание

1. Создайте функцию numtoa(), выполняющую преобразование длинного числа в строку. Функция должна иметь следующий прототип:

Перевод длинного числа в строку

void numtoa (const number_t num, char**str);

2. Создайте функцию atonum(), выполняющую преобразование строки в длинное число. Функция должна иметь такой прототип:







Дата добавления: 2015-09-06; просмотров: 382. Нарушение авторских прав; Мы поможем в написании вашей работы!




Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Типовые ситуационные задачи. Задача 1.У больного А., 20 лет, с детства отмечается повышенное АД, уровень которого в настоящее время составляет 180-200/110-120 мм рт Задача 1.У больного А., 20 лет, с детства отмечается повышенное АД, уровень которого в настоящее время составляет 180-200/110-120 мм рт. ст. Влияние психоэмоциональных факторов отсутствует. Колебаний АД практически нет. Головной боли нет. Нормализовать...

Эндоскопическая диагностика язвенной болезни желудка, гастрита, опухоли Хронический гастрит - понятие клинико-анатомическое, характеризующееся определенными патоморфологическими изменениями слизистой оболочки желудка - неспецифическим воспалительным процессом...

Признаки классификации безопасности Можно выделить следующие признаки классификации безопасности. 1. По признаку масштабности принято различать следующие относительно самостоятельные геополитические уровни и виды безопасности. 1.1. Международная безопасность (глобальная и...

Измерение следующих дефектов: ползун, выщербина, неравномерный прокат, равномерный прокат, кольцевая выработка, откол обода колеса, тонкий гребень, протёртость средней части оси Величину проката определяют с помощью вертикального движка 2 сухаря 3 шаблона 1 по кругу катания...

Неисправности автосцепки, с которыми запрещается постановка вагонов в поезд. Причины саморасцепов ЗАПРЕЩАЕТСЯ: постановка в поезда и следование в них вагонов, у которых автосцепное устройство имеет хотя бы одну из следующих неисправностей: - трещину в корпусе автосцепки, излом деталей механизма...

Понятие метода в психологии. Классификация методов психологии и их характеристика Метод – это путь, способ познания, посредством которого познается предмет науки (С...

Studopedia.info - Студопедия - 2014-2026 год . (0.01 сек.) русская версия | украинская версия