Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/75: Рейтинг темы: голосов - 75, средняя оценка - 4.77
9 / 9 / 2
Регистрация: 02.04.2015
Сообщений: 197

Деление длинных чисел столбиком

09.05.2015, 20:42. Показов 15499. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. У меня возникла проблема при написании курсовой. Необходимо реализовать деление двух больших чисел(записанных "зеркально"). Хотя я знаю, что нужно пользоваться делением в столбик но реализовать в программе не получается. Подскажите пожалуйста как это сделать. Ну или киньте код. Буду очень благодарен.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.05.2015, 20:42
Ответы с готовыми решениями:

Деление длинных чисел
Код который делит очень длинное число на обычное число. Если вводить 121 и 2 выводит неправильный ответ. Какие условия надо поставить...

Деление длинных чисел нацело
Возникла проблема. Завтра сдавать курсовик (арифметика длинных чисел), а у меня не готово деление, так как не знаю, как сделать. Курсовик...

Умножение/деление длинных целых чисел из строк
у кого есть код 'умножение и деление целых чисел из строк'? заранее спасибо Добавлено через 32 минуты или библиотека и функции

7
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
09.05.2015, 21:09
Длинное DIV длинное & Длинное MOD длинное
1
9 / 9 / 2
Регистрация: 02.04.2015
Сообщений: 197
09.05.2015, 21:11  [ТС]
спасибо
0
 Аватар для Gr1f0nn
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
09.05.2015, 21:12
Когда писал свой класс больших чисел, то деление реализовывал так (с учетом того, что остальные операции уже реализованы):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
super_int operator/(super_int ob1, super_int ob2)
{
    super_int
            result,
            buffer,
            del;
    int
            size = ob2.big_digit.size(),
            multiply = 0;
 
 
    if(ob2 > ob1) {del.big_digit.push_back(0); return del; }
    if(ob2 == ob1) return 1;
 
    while(ob1 > ob2)
    {
        size = ob2.big_digit.size();
        for(int i = 0 ; i < size ; ++i)
        {
            buffer.big_digit.push_back(ob1.big_digit[i]);
        }
        if (buffer < ob2) buffer.big_digit.push_back(ob1.big_digit[size++]);
 
        buffer.decrement(); // удаление незначащих нулей
 
        multiply = 0; del = 0;
        while(del < buffer) { multiply++; del = ob2*multiply; }
        while (del > buffer) { --multiply; del = ob2*multiply; }
 
        result.big_digit.push_back(multiply);
 
        buffer = buffer - ob2*multiply;
        for(int i = 0 ; i < size ; ++i)
        {
            ob1.big_digit.erase(ob1.big_digit.begin());
        }
 
        ob1.big_digit.insert(ob1.big_digit.begin(), buffer.big_digit.begin(), buffer.big_digit.end());
        if(buffer == 0 && ob1.big_digit.front() == 0) result.big_digit.push_back(0);
        if(buffer == 0 && ob1 >= 1) result.big_digit.push_back(0);
        buffer.big_digit.clear();
    }
 
    return result;
}
Незначащие нули удалял в функции, которая нужна больше для вычитания, но в ней присутствует эта строчка:
C++
1
2
3
4
    big_digit.erase(big_digit.begin(), find_if(big_digit.begin(), big_digit.end(), [](bit n) // поиск и удаление незначащих 0
    {
        return n.get_digit() > 0;
    }));

Не по теме:

Конечно, алгоритм без комментариев, но может тоже поможет ^_^

0
9 / 9 / 2
Регистрация: 02.04.2015
Сообщений: 197
09.05.2015, 21:13  [ТС]
Gr1f0nn, блин. жаль что в курсовике нельзя использовать классы, так как не проходили еще
0
 Аватар для Gr1f0nn
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
09.05.2015, 21:15
mracobes9, Можно через структуры тоже самое реализовать, если их можно использовать
0
9 / 9 / 2
Регистрация: 02.04.2015
Сообщений: 197
09.05.2015, 21:16  [ТС]
Gr1f0nn, к сожалению тоже нельзя
0
 Аватар для art_artemios
35 / 23 / 7
Регистрация: 23.12.2018
Сообщений: 101
23.12.2018, 14:31
Вот очень простая реализация деления в столбик. Это позволяет получать числа с огромным кол-вом знаков после запятой.


C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
 
using namespace std;
 
int main() {
    int a, n, i = 0, o = 100;
    bool fract = false;
    setlocale(LC_ALL, "Russian");
    cout << "Введите по порядку: делимое, делитель, кол-во знаков..." << endl;
    cin >> a >> n >> o;
    while (i < o) {
        while (n > a) {
            if (!fract) {
                fract = true;
                cout << "0.";
                a *= 10;
            }
            else {
            a *= 10;
            cout << 0;
            }
        }
        
        cout << a / n;
        a %= n;
        a *= 10;
        i++;
    }
}
Добавлено через 11 минут
Да, однако извиняюсь, предыдущий код подходит только для случая n > a. Вот код для любых чисел:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
 
using namespace std;
 
int main() {
    int a, n, i = 0, o = 100;
    bool fract = false;
    setlocale(LC_ALL, "Russian");
    cout << "Делимое, делитель, кол-во знаков:" << endl;
    cin >> a >> n >> o;
    while (i < o && a != 0) {
        while (n > a && a != 0) {
            if (!fract) {
                fract = true;
                cout << "0.";
                a *= 10;
            }
            else {
            a *= 10;
            cout << 0;
            }
        }
        
        cout << a / n;
        a %= n;
        if (!fract) {
                fract = true;
                cout << ".";
            }
        a *= 10;
        i++;
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.12.2018, 14:31
Помогаю со студенческими работами здесь

Сделать сложение, вычитание, умножение и деление длинных чисел
В общем, задача такая, что надо сделать сложение, вычитание, умножение и деление длинных чисел. Сумму сделал, с вычитанием какая-то засада....

Сложение/деление двух длинных чисел (длиной 1024 бита)
Всем привет! Есть две вот такие задачи: 1. используя вставку кода в программу на С++, составить программу для сложения 2-х длинных...

Калькулятор. Деление столбиком
Помогите решить проблему с делением длинных чисел в столбик. Конкретно , не понимаю как программно написать &quot;отщипывание&quot; у...

Вычитание, умножение, деление столбиком
дано мне в классе 2 числа представленные в виде массивов. вот..для них у меня должны быть перегрузки операций сложения,вычитания,умножения...

Быстрое деление 2х длинных
Предположим у меня есть вектор a и вектор b. Каждый элемент вектора содержит 9 цифр (основание миллиард). Дак вот вопросец, как поделить a...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru