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

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

Войти
Регистрация
Восстановить пароль
 
FloraWinx
 Аватар для FloraWinx
4 / 4 / 1
Регистрация: 05.10.2013
Сообщений: 122
06.11.2013, 22:29     Длинная арифметика. Деление столбцом #1
Всем доброго времени суток, занимаюсь реализацией длинной арифметики, а именно с помощью 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     Длинная арифметика. Деление столбцом
Посмотрите здесь:

C++ Длинная арифметика
C++ Длинная арифметика))
Длинная арифметика C++
Длинная арифметика C++
C++ Длинная арифметика
C++ Длинная арифметика
длинная арифметика деление C++
Длинная арифметика C++
C++ Длинная арифметика(деление на 11)
C++ Длинная арифметика, деление чисел
C++ Длинная арифметика, деление
C++ Длинная арифметика. Деление

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

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

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