Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
FloraWinx
4 / 4 / 1
Регистрация: 05.10.2013
Сообщений: 123
#1

Длинная арифметика. Деление столбцом - C++

06.11.2013, 22:29. Просмотров 1081. Ответов 2
Метки нет (Все метки)

Всем доброго времени суток, занимаюсь реализацией длинной арифметики, а именно с помощью string , перегрузила операторы (-,*,+) успешно все работает. вот с делением беда.
Вроде и придумала алгоритм но все равно как то сильно громоздко и очень много кода.
к примеру если есть два числа ( длинных) если делитель больше делимого то результат 0 или если делимое и делитель равны между собой, это я сделала. вот проблема уже именно с самым делением, была идея поначалу брать хвост делимого равен делителю проверять если хвост делимого меньше длины делителя то увеличивать на единицу, и потом в цикле умножать делитель до того момента пока он не будет больше делимого, и вычитать то есть подставлять, но это как то слишком тяжело.
вот мой код и то что я сделала дальше не хватает мозгов прошу люди помогите


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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
  
#include "StdAfx.h"
#include "verylong.h"
#include <ios>
 
 
 
string operator/ (const string num1, const string num2) {
verylong TEMP; 
TEMP.input(num1, num2); // считуем строку
int tmp_str_len;  
int count;
string holder;
string  temp;
string tmp_string;
bool acces = false;
string result;
 
int diferent;
int res;
char temp_st , temp_num2;
 
 
if (TEMP.number2[0] == '0' && TEMP.length2 ==1) {  // тут мы проверяем если делитель ноль то конец!
   string error="Divizion NULL : (!";
   return error;}
 
 
 
if(TEMP.length2 >= TEMP.length1){    // тут мы выдаем ноль если делитель больше делимого
    if(TEMP.length1==TEMP.length2){
        for(int i=TEMP.length1-1;i>0;i--){
            if(int(TEMP.number1[i])!=int(TEMP.number2[i])){
                if(int(TEMP.number1[i]<TEMP.number2[i])){
                    acces=false;
                    result="0";}
                else  { if (int(TEMP.number1[i]>int(TEMP.number2[0]))){
                    i=-1;}}}}}
    else {
        result ="0";
            acces=false;
            ;
    }}
        
 
    
    
 
    if(TEMP.length1>=TEMP.length2){
        if(TEMP.length1>TEMP.length2){
            diferent=(TEMP.length1-TEMP.length2);
            for(int i=0; i<TEMP.length2;i++){
                tmp_string.push_back(TEMP.number1[i]);}
            tmp_str_len=tmp_string.length();
            temp_st = tmp_string[0];
            temp_num2 = TEMP.number2[0];
            if(int(temp_st)<temp_num2){
                tmp_string.clear();
                tmp_str_len=0;
                for(int i=0;i<(TEMP.length1-diferent)+1;i++)
                { tmp_string.push_back(TEMP.number1[i]);}}
            else
            {
                if(int(temp_st)>int(temp_num2))
                {
                    while(tmp_string>=holder){
                        holder= tmp_string*to_string(count);
                        count++;
                        
 
                    }
                
 
                }
 
            }
Если надо могу выложить остальные файлы проекта.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2013, 22:29     Длинная арифметика. Деление столбцом
Посмотрите здесь:

Длинная арифметика(деление на 11) - C++
Здравствуйте имеется задача , в которой надо проверить делиться ли число на 11 ввод: любое число не больше чем 101000 вывод : да или...

Длинная арифметика. Деление - C++
Здравствуйте, помогите написать функцию для деления длинных чисел. Вот мой код, реализовал в виде класса, перегрузил операции сравнения...

длинная арифметика деление - C++
имеется два обьекта, которые представляют собой массивы чисел вопрос: как реализовать деление этих массивов друг на друга каков...

Длинная арифметика, деление - C++
Нужно составить программу для деления числа а на число b. Оба числа многозначные. Может кто то писал уже такую программу. Желательно на...

Длинная арифметика, деление чисел - C++
http://www.cyberforum.ru/attachment.php?attachmentid=393890&amp;stc=1&amp;d=1398936287 Помоги с решием , желательно код.Заранее спасибО!

длинная арифметика - C++
решите задачку: пользователь вводит 2 больших числа (числа от -1*2^127 до 1*2^127-1). Написать программу для суммирования таких чисел.

Длинная арифметика - C++
Алгоритмы всех операций в принципе уже готовы (длина числа ограничивается только ресурсами ПК). Осталось только подобрать качественный...

Длинная арифметика)) - C++
Программка уже почти готова, единственное неправильно находит остаток при делении По заданию: Надо ввести 2-ва целых числа неогран....

Длинная арифметика - C++
Как сделать типы длинных чисел, например, знаковое 256-ти битное целое и 256-ти битное вещественное с 224-х битной мантиссой и 32-х битным...

Длинная арифметика - C++
Поодскажите какую-нибудь библиотеку, где реализована работа со знаковыми целыми числами произвольной длины.

Длинная арифметика - C++
Здравствуйте, есть такая задача.. Препод по алгоритмам задал сделать программу для перевода чисел в разные системы счислений. Это...

Длинная арифметика - C++
Привет всем! помогите пожалуйста кодом. Необходимо реализовать операцию сравнения двух длинных чисел A&gt;=B Заранее спасибо


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ssXXss
264 / 186 / 10
Регистрация: 15.01.2011
Сообщений: 668
06.11.2013, 22:38     Длинная арифметика. Деление столбцом #2
тыц
FloraWinx
4 / 4 / 1
Регистрация: 05.10.2013
Сообщений: 123
06.11.2013, 22:43  [ТС]     Длинная арифметика. Деление столбцом #3
это не совсем то что мне надо)
Yandex
Объявления
06.11.2013, 22:43     Длинная арифметика. Деление столбцом
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru