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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Anton1890
0 / 0 / 0
Регистрация: 27.03.2010
Сообщений: 25
#1

Действия над многорозряднымии числами(очень длинными) - C++

22.09.2010, 12:52. Просмотров 1485. Ответов 9
Метки нет (Все метки)

Помогите пожалуйста:
1. Задачи:
- Введение многоразрядного числа с клавиатуры.
- Выведение многоразрядного числа на экран.
- Сумма двух таких чисел.
- Реализация сравнения двух таких чисел (A=В, А<В, А>В, А=<В, А>=В).
- Умножения большого числа на короткое.
- Написать программу вычисления факториала N! при N>100.

P.S. Кто понимает украинский могу выложить часть лекции.
4.doc
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2010, 12:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Действия над многорозряднымии числами(очень длинными) (C++):

Действия с длинными числами - C++
Ребята, нужна помощь. Информации нигде нет. Задача такова. Нужно провести арифметичексие действия с целыми числами не превышающие 30 цифр....

Арифметические действия над числами - C++
Арифметические действия над числами пронумерованы следующим образом: 1 – сложение, 2 – вычитание, 3 – умножение, 4 – деление. Дан номер...

Работа с длинными числами - C++
Мне нужно прочитать из файла 22-х значные целые числа для количественного сравнения. int и long int не сохраняют полную длину числа. Какой...

Работа с длинными числами - C++
Здравствуйте! На программировании в вузе дали индивидуальную задачу которая предусматривает работу с большими числами: 1 &lt;= N &lt;=...

Класс для работы с длинными числами - C++
Необходимо реализовать класс для работы с длинными числами. Подскажите алгоритм реализации следующих пунктов: 1) Ввод/вывод числа 2)...

Длинная арифметика. Класс работы с длинными числами. - C++
// модул_умнож.cpp : main project file. #include &quot;stdafx.h&quot; #include &quot;vector&quot; #include &lt;algorithm&gt; #include &quot;stdio.h&quot; #include...

9
LineStown
66 / 66 / 3
Регистрация: 04.08.2010
Сообщений: 420
Завершенные тесты: 1
22.09.2010, 13:35 #2
В инсте была такая задача, всё сводится к использованию масива для хранения больших чисел поциферно.
0
Anton1890
0 / 0 / 0
Регистрация: 27.03.2010
Сообщений: 25
22.09.2010, 13:41  [ТС] #3
Я знаю на счет массива,но можно пример кода или хотя бы ссылку.
0
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
22.09.2010, 13:54 #4
Основываемся на представлении числа в виде массива.
Для факториала всё равно придётся реализовать произведение двух больших чисел. Сложение основывается на школьном алгоритме сложения столбиком. Вся сложность (относительная) - реализация перенесения разряда при его переполнении. Умножение так же реализуется столбиком, на основе уже реализованного сложения. Ну а факториал банально реализуется на основе уже написанного умножения (только не в коем случае не рекурсия - только цикл).
Для сравнения A и B сначала проверяем количество разрядов у каждого из них. Если у одного разрядов больше, чем у другого, то оно заведомо больше. Если количество разрядов равно, сравниваем числа поразрядно, начиная со старшего разряда. Если у A старший разряд больше, чем у B, то A соответственно больше B. Если старшие разряды равны, переходим на разряд младше на порядок. И т.д. Работает в обе стороны. Возвращать в зависимости от результатов проверки -1, 0, 1 (меньше, равны, больше).

Добавлено через 44 секунды
На счёт ссылки - ищите в гугле "Длинная арифметика"
1
Anton1890
0 / 0 / 0
Регистрация: 27.03.2010
Сообщений: 25
22.09.2010, 13:56  [ТС] #5
В теории я это как понимаю,но мне желательно практический пример - программу,если можно.
0
fasked
Эксперт С++
4945 / 2525 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
22.09.2010, 14:00 #6
Anton1890, почитайте http://www.cyberforum.ru/cpp-beginne...ead153284.html
Может натолкнет Вас на мысли.
1
Anton1890
0 / 0 / 0
Регистрация: 27.03.2010
Сообщений: 25
22.09.2010, 14:09  [ТС] #7
Спасибо за ссылку но боюсь в таком виде препод вообще не поймет и не поверит что я задание сам сделал.
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
22.09.2010, 14:19 #8
сложение и вычитание

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
void sub(int *f, int *s, int size){
    for (int i = 0; i < size; ++i){
        if (f[i] >= s[i])
            f[i] -= s[i];
        else{
            --f[i+1];
            f[i] +=  (10 - s[i]);
        }
        std::cout<<f[i];
    }
}
 
void add(int *f, int *s, int size){
    const int SS = 10;
    int ost = 0;
    for (int i = 0; i < size; ++i){
        f[i] = (s[i] + f[i] + ost);
        ost = 0;
        if (f[i] >= SS){
            ost = f[i] / 10;
            f[i] %= 10;
        }
        std::cout << f[i];
    }
}
Добавлено через 4 минуты
12345 + 789
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const int SIZE = 20;
 
 
int main(){
    int first[SIZE] = {5,4,3,2,1};
    int second[SIZE] = {9,8,7};
 
    std::cout << "First number:   ";
    std::cout << std::endl << "Second number:  ";
    std::cout << std::endl << std::endl << "Result number:  ";
    add(first,second,SIZE);
 
 
    return 0;
}
числа в массиве записаны в обратном порядке
2
Disa
1 / 1 / 0
Регистрация: 30.11.2009
Сообщений: 88
29.11.2010, 00:54 #9
Цитата Сообщение от PointsEqual Посмотреть сообщение
std::cout<<f[i];
можете дать расширенный комментарий по поводу этой строки, пожалуйста?
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
29.11.2010, 09:50 #10
Цитата Сообщение от Disa Посмотреть сообщение
можете дать расширенный комментарий по поводу этой строки, пожалуйста?
вывести на экран цифру числа, (элемент массива)
1
29.11.2010, 09:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2010, 09:50
Привет! Вот еще темы с ответами:

Создать класс для работы с длинными числами - C++
Помогите, пожалуйста, сделать хотя бы один из нижеперечисленных вопросов. Нужно создать класс для работы с длинными числами(сложение,...

Операции с длинными числами - неправильно выводится результат - C++
Здравствуйте, помогите с операцией умножение неправильно выводит рез-тат, например 555 * 3 = 555

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

Действия над матрицами - C++
Привет программистам ! помогите плз вот в таком задании: ***** с клавиатуры задать матрицы А(n x n) и В(n x n). вычислит матрицу...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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