|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.01.2022, 08:38 | #1 |
Пользователь
Регистрация: 12.12.2021
Сообщений: 10
|
Арифметические операции с массивами.
Программа генерирует два дробных числа X и Y с количеством знаков после запятой - 100.
Эти числа хранятся в массиве, где одна ячейка массива - одна цифра числа. Реализуйте все 4 математических операции над этими дробями:
Заранее благодарю за помощь |
14.01.2022, 10:07 | #2 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,331
|
А в чём собственно вопрос?
Что непонятно, что не получается? 1. Сколько цифр в целой части? 2. Число цифр после запятой может быть одинаковым или разным. Если разное число цифр, то какой признак используется для конца массива? Алгоритм для сложения (вычитания) простой: 1. Выравниваем число цифр после запятой: дополняем короткий массив до длинного нулями. 2. Определяем переменную, например, C, в которой будет храниться результат переноса (заёма, если вычитание). Начальное значение: C := 0; 3. В цикле просматриваем массив справа налево. Складываем (вычитаем) цифры по правилам арифметики, принимая во внимание значение C. Если есть перенос (заём), то C := 1; 4. Оформить это в виде функции для использования в операциях умножения и деления. Умножение (деление) сложнее. Там нужен массив размер которого равен сумме размеров исходных массивов. Тут, так думаю, нужно написать функцию умножения числа на цифру по аналогии с предыдущими функциями. Собственно умножение: Очищаем массив для хранения произведения. Добавляем в этот массив множимое. В цикле просматриваем множитель справа налево. Умножаем множимое на цифру множителя (предыдущая функция). Складываем результат с множимым (первая функция). Повторяем в цикле. На каждом шаге сдвигаем результат умножения (то, что будет прибавляться к массиву произведения) на цифру влево. Для этого можно создать индекс, который будет указывать на нужный разряд. Деление делается по аналогии с умножением. Можно и не писать функцию умножения на цифру, а делать простым сложением (вычитанием), но это, для десятичных чисел, будет долгим процессом. Для умножения (деления) возможно есть и другие, более скорые, алгоритмы. Но это надо поискать. PS: Естественно, что это надо проделать самому. Если нет желания и мало времени, то быстренько во фриланс, см. тему в начале страницы. Возможно там ещё есть свободные руки.
Как-то так, ...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Арифметические операции | nikita-92 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 11.04.2013 00:08 |
Арифметические операции. | Saintpatrick38 | Помощь студентам | 2 | 05.04.2013 09:04 |
Арифметические операции | swillrocker | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 02.10.2012 21:31 |
составление программ в паскале:циклический алгоритм, массивы и арифметические операции с массивами | Сашаа | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 21.12.2011 21:00 |