adamo86
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
|
|
#1 | |
Работа с длинными числами - C++14.08.2011, 20:56. Просмотров 6899. Ответов 24
Метки нет Все метки)
(
Мне нужно прочитать из файла 22-х значные целые числа для количественного сравнения. int и long int не сохраняют полную длину числа. Какой тип можно использовать?
0
|
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
14.08.2011, 20:56 |
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Работа с длинными числами (C++):
24
Работа с длинными числами - C++ Функция с++ (работа с длинными числами - вывод результата в файл) - C++ Действия с длинными числами - C++ Класс для работы с длинными числами - C++ Длинная арифметика. Класс работы с длинными числами. - C++ Действия над многорозряднымии числами(очень длинными) - C++ |
adamo86
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
|
|
14.08.2011, 21:05 [ТС] | #4 |
long long не берет. А "Длинная арифметика" что это такое? Где можно про это почитать?
0
|
talis
|
||||||
14.08.2011, 21:07 | #5 | |||||
Ну вот - пришли к "ручками"
![]()
0
|
diagon
Higher
|
|
14.08.2011, 21:09 | #6 |
1
|
adamo86
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
|
|
14.08.2011, 21:13 [ТС] | #7 |
0
|
talis
|
|
14.08.2011, 21:22 | #8 |
Это значит "вернуть результат операции a[i] < b[i]". Представьте, что это арифметическая операция, вроде сложения. return a[i] + b[i] - это уже понятнее
![]() Другими словами, если a[i] меньше b[i], то вернётся 1, если же это не так (a[i] не меньше b[i]), то вернётся 0. Добавлено через 5 минут Смысл тут такой: есть два числа: 99999949999 99999969999 Если они имеют разную длину, то очевидно, что большим из них будет число с большей длиной (при условии, что нет лидирующих нулей и без учёта знака минуса). Например, тут очвеидно, что первое число больше второго: 4654684156415213 99999 Если же длина равна, как в первом случае, то нужно слева направо, от старшего разряда к младшему, искать первое различие между числами: a[0] = 9; b[0] = 9; различия нет, идём дальше a[1] = 9; b[1] = 9; различия нет, идём дальше ... a[6] = 4; b[6] = 6; есть различие! если a[6] < b[6], то a < b. Соответственно, return a[i] < b[i]. Надеюсь, смог прояснить ситуацию.
1
|
adamo86
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
|
|
14.08.2011, 21:24 [ТС] | #9 |
Если a < b, то ответом будет целое значение наверное. Тогда почему функция a_less_then_b типа char?
0
|
talis
|
|
14.08.2011, 21:26 | #10 |
char имеет размер в 1 байт. одного байта хватает, чтобы хранить 0 или 1 - больше не требуется :-)
Добавлено через 38 секунд просто байт - минимальный адресуемый участок памяти, функция не может вернуть бит
0
|
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
|
|
14.08.2011, 21:28 | #11 |
0
|
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
|
|
14.08.2011, 21:35 | #14 |
да, но это в стиле быдлокода.)
ведь bool как раз и создан для этих целей, и куда привычнее увидеть bool, все станет на свои места, а с вашим char придется смотреть реализацию, чтобы понять чтоже оно возвращает. имхо Добавлено через 3 минуты да ну, с каких это пор bool 4 байта? http://msdn.microsoft.com/en-us/library/cc953fe1(v=VS.71).aspx
0
|
talis
|
|
14.08.2011, 21:37 | #15 |
Зачем? 1 = меньше, 0 = не меньше, -1 = наверное всё-таки меньше
![]() Во-первых, в C bool изначально не было, и все программеры старой школы по-вашему "быдлокодеры". Брайан Керниган и Деннис Ритчи в частности. Во-вторых gcc у меня до сих пор пишет error: 'bool' undeclared (first use in this function). Так что вот так вот. Добавлено через 1 минуту ![]()
0
|
14.08.2011, 21:37 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
14.08.2011, 21:37 |
Привет! Вот еще темы с ответами:
15
Создать класс для работы с длинными числами - C++ Операции с длинными числами - неправильно выводится результат - C++ Работа с числами - C++ Работа с числами - C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |