Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2022, 08:38   #1
solmyashzz
Пользователь
 
Регистрация: 12.12.2021
Сообщений: 10
По умолчанию Арифметические операции с массивами.

Программа генерирует два дробных числа X и Y с количеством знаков после запятой - 100.
Эти числа хранятся в массиве, где одна ячейка массива - одна цифра числа.
Реализуйте все 4 математических операции над этими дробями:
  1. X+Y
  2. X-Y
  3. X*Y
  4. X/Y
Результат выполнения сохраняется в массив Z и выводится на экран.

Заранее благодарю за помощь
solmyashzz вне форума Ответить с цитированием
Старый 14.01.2022, 10:07   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

А в чём собственно вопрос?
Что непонятно, что не получается?
1. Сколько цифр в целой части?
2. Число цифр после запятой может быть одинаковым или разным.
Если разное число цифр, то какой признак используется для конца массива?

Алгоритм для сложения (вычитания) простой:
1. Выравниваем число цифр после запятой: дополняем короткий массив до длинного нулями.
2. Определяем переменную, например, C, в которой будет храниться результат переноса (заёма, если вычитание). Начальное значение: C := 0;
3. В цикле просматриваем массив справа налево. Складываем (вычитаем) цифры по правилам арифметики, принимая во внимание значение C. Если есть перенос (заём), то C := 1;
4. Оформить это в виде функции для использования в операциях умножения и деления.

Умножение (деление) сложнее.
Там нужен массив размер которого равен сумме размеров исходных массивов.
Тут, так думаю, нужно написать функцию умножения числа на цифру по аналогии с предыдущими функциями.

Собственно умножение:
Очищаем массив для хранения произведения.
Добавляем в этот массив множимое.
В цикле просматриваем множитель справа налево.
Умножаем множимое на цифру множителя (предыдущая функция). Складываем результат с множимым (первая функция).
Повторяем в цикле. На каждом шаге сдвигаем результат умножения (то, что будет прибавляться к массиву произведения) на цифру влево. Для этого можно создать индекс, который будет указывать на нужный разряд.

Деление делается по аналогии с умножением.

Можно и не писать функцию умножения на цифру, а делать простым сложением (вычитанием), но это, для десятичных чисел, будет долгим процессом.

Для умножения (деления) возможно есть и другие, более скорые, алгоритмы. Но это надо поискать.

PS: Естественно, что это надо проделать самому.
Если нет желания и мало времени, то быстренько во фриланс, см. тему в начале страницы.
Возможно там ещё есть свободные руки.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Арифметические операции 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