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

Работа с длинными числами - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 41, средняя оценка - 4.83
adamo86
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
14.08.2011, 20:56     Работа с длинными числами #1
Мне нужно прочитать из файла 22-х значные целые числа для количественного сравнения. int и long int не сохраняют полную длину числа. Какой тип можно использовать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2011, 20:56     Работа с длинными числами
Посмотрите здесь:

Работа с числами C++
C++ Действия над многорозряднымии числами(очень длинными)
Работа с числами в с++ C++
C++ работа с числами
Работа с числами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 21:57     Работа с длинными числами #21
diagon, в спецификации сказано <0 и >0, так что действительно, что угодно
А вот зачем вычислять разность всего числа, если нужно просто определить факт разности одного разряда двух разных чисел - не пойму.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.08.2011, 22:08     Работа с длинными числами #22
Как-то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int cmp(const char * a, const char * b){
    int len1 = strlen(a), len2 = strlen(b);
    
    if (len1 > len2)
        return 1;
    if (len2 > len1)
        return -1;
    
    for (int i = 0; i < len1; ++i)
    {
        if (a[i] > b[i])
            return 1;
        if (a[i] < b[i])
            return -1;
    }
    return 0;
}
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 22:10     Работа с длинными числами #23
diagon, как вариант. Но опять же - вы возвращаете 1, 0 и -1 - хватит знакового однобайтового, char, а у вас целых 4 байта, int.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.08.2011, 22:14     Работа с длинными числами #24
Цитата Сообщение от talis Посмотреть сообщение
diagon, как вариант. Но опять же - вы возвращаете 1, 0 и -1 - хватит знакового однобайтового, char, а у вас целых 4 байта, int.
А зачем эта экономия? 3 байта никакой роли не сыграют. И char прежде всего ассоциируется с символом, поэтому код станет немного сложнее понять. Я вообще хотел использовать short, но вспомнилось с баша
philpirj@habr: каждый раз, когда ты пишешь int i вместо short i, сотни пользователей вынуждены докупать планку памяти
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2011, 22:17     Работа с длинными числами
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 22:17     Работа с длинными числами #25
Ну сделайте так:

C
1
2
3
4
typedef char byte;
 
byte strcmp( char * str1, char * str2 )
//...
А вообще, от всей души желаю вам докупить планку памяти и собрать комп своей мечты
Yandex
Объявления
14.08.2011, 22:17     Работа с длинными числами
Ответ Создать тему
Опции темы

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