Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 30.12.2015
Сообщений: 14
1

Разность длинных чисел

28.05.2016, 23:28. Показов 2915. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите как реализовать разность длинных чисел

Добавлено через 36 секунд
Причем длинные числа задаются линейными списками
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.05.2016, 23:28
Ответы с готовыми решениями:

Разность длинных чисел
Как доделать код чтобы можно было считать не только сумму но и разность#include "stdafx.h"...

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

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

Класс длинных чисел
не выводит сумму number1 и number2, помогите, пожалуйста #include <iostream> #include...

2
58 / 55 / 28
Регистрация: 20.05.2015
Сообщений: 256
28.05.2016, 23:33 2
Лучший ответ Сообщение было отмечено Erti86 как решение

Решение

Erti86, это длинная арифметика, вот статья, прочтите - http://e-maxx.ru/algo/big_integer
Смотря для чего вам нужно. Если просто на один раз, то можно просто реализовать, например так ( здесь считывание строками ):
Кликните здесь для просмотра всего текста
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
#include <cstdio>
#include <vector>
#include <string>
#include <algorithm>
#include <iostream>
#define s(a) (int)a.size()
 
bool bigger(std::vector<int>b, std::vector<int>a){
    if(s(a) > s(b))
        return false;
    else if(s(a) < s(b))
        return true;
    else{
        for(int i=s(a)-1;i>=0;i--){
            if(a[i] > b[i])
                return false;
            else if(b[i] > a[i])
                return true;
        }
    }
return false;
}
 
int main()
{
  std::string f;
  std::cin >> f;
  std::vector<int>a(s(f));
  int k = 0;
  for(int i=s(f)-1;i>=0;i--){
    a[k] = f[i] - 48;
    k++;
  }
  std::string se;
  std::cin >> se;
  std::vector<int>b(s(se));
  k = 0;
  for(int i=s(se)-1;i>=0;i--){
    b[k] = se[i] - 48;
    k++;
  }
  // Само вычитание
  bool minus = false;
  if(bigger(b, a)){
    std::swap(a, b);
    minus = true;
    }
  int rem = 0;
  for(int i=0;i<s(a) || rem != 0;i++){
    a[i] = a[i] - ( i < s(b) ? (b[i] + rem) : rem);
    rem = 0;
    if(a[i] < 0){
        rem++;
        a[i]+=10;
    }
  }
  while(s(a) > 1 && a.back() == 0){
    a.pop_back();
  }
  if(minus){
    printf("-");
  }
  for(int i=s(a)-1;i>=0;i--){
    printf("%d", a[i]);
  }
 
 
 
 
 
 
}


Если для постоянного использования, то, соответственно, нужно реализовывать класс.
0
0 / 0 / 0
Регистрация: 30.12.2015
Сообщений: 14
28.05.2016, 23:37  [ТС] 3
Спасибо, но интересует вариант именно через Линейные списки
0
28.05.2016, 23:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2016, 23:37
Помогаю со студенческими работами здесь

Сравнение длинных чисел >, <
Доброго времени суток всем. помогите пожалуйста прояснить алгоритм сравнения относительно длинных...

Умножение длинных чисел
не работает процедура умножения длинных чисел. переводил с паскаля по книге Окулова...

Сложение длинных чисел
Здравствуйте, при решении задачи возникла ошибка при складывании элементов массивов. Получаются...

Умножение длинных чисел
Найти произведение двух длинных чисел(целые числа, десятичная запись которых может содержать до 255...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru