2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
|
|
1 | |
Работа с длинными числами14.08.2011, 20:56. Показов 10866. Ответов 24
Метки нет (Все метки)
Мне нужно прочитать из файла 22-х значные целые числа для количественного сравнения. int и long int не сохраняют полную длину числа. Какой тип можно использовать?
0
|
14.08.2011, 20:56 | |
Ответы с готовыми решениями:
24
Работа с длинными числами Работа над бесконечно длинными числами Функция с++ (работа с длинными числами - вывод результата в файл) Сочетания с длинными числами |
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
|
|
14.08.2011, 21:05 [ТС] | 4 |
long long не берет. А "Длинная арифметика" что это такое? Где можно про это почитать?
0
|
14.08.2011, 21:07 | 5 | |||||
Ну вот - пришли к "ручками" Набросал быстро:
0
|
Higher
|
|
14.08.2011, 21:09 | 6 |
1
|
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
|
|
14.08.2011, 21:13 [ТС] | 7 |
0
|
14.08.2011, 21:22 | 8 |
Это значит "вернуть результат операции a[i] < b[i]". Представьте, что это арифметическая операция, вроде сложения. return a[i] + b[i] - это уже понятнее только если у операции "+" результат - сумма левого и правого операнда, то у операции "<" - логическое значение (0 или 1), говорящее о том, что a[i] меньше b[i] (в случае, если оно равно 1) или что a[i] не меньше b[i] (если оно равно 0).
Другими словами, если 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
|
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
|
|
14.08.2011, 21:24 [ТС] | 9 |
Если a < b, то ответом будет целое значение наверное. Тогда почему функция a_less_then_b типа char?
0
|
14.08.2011, 21:26 | 10 |
char имеет размер в 1 байт. одного байта хватает, чтобы хранить 0 или 1 - больше не требуется :-)
Добавлено через 38 секунд просто байт - минимальный адресуемый участок памяти, функция не может вернуть бит
0
|
Android Programmer
141 / 142 / 10
Регистрация: 08.12.2010
Сообщений: 421
|
|
14.08.2011, 21:28 | 11 |
0
|
Android Programmer
141 / 142 / 10
Регистрация: 08.12.2010
Сообщений: 421
|
|
14.08.2011, 21:35 | 14 |
да, но это в стиле быдлокода.)
ведь bool как раз и создан для этих целей, и куда привычнее увидеть bool, все станет на свои места, а с вашим char придется смотреть реализацию, чтобы понять чтоже оно возвращает. имхо Добавлено через 3 минуты да ну, с каких это пор bool 4 байта? http://msdn.microsoft.com/en-u... S.71).aspx
0
|
14.08.2011, 21:37 | 15 |
Зачем? 1 = меньше, 0 = не меньше, -1 = наверное всё-таки меньше В любом случае, перепишите под себя
Во-первых, в C bool изначально не было, и все программеры старой школы по-вашему "быдлокодеры". Брайан Керниган и Деннис Ритчи в частности. Во-вторых gcc у меня до сих пор пишет error: 'bool' undeclared (first use in this function). Так что вот так вот. Добавлено через 1 минуту
Сообщение от msdn
0
|
Android Programmer
141 / 142 / 10
Регистрация: 08.12.2010
Сообщений: 421
|
|
14.08.2011, 21:39 | 16 |
я знаю, что в С изначально его не было.
ну а в С++ bool есть) давайте будем вспоминать чего ещё где не было?) хотя ладно, у каждого свои предпочтения, не будем спорить.
0
|
Higher
|
|
14.08.2011, 21:45 | 18 |
Тьфу...
Но на каком-то компиляторе он действительно 4 байта весил. Ну так в стиле strcmp. -1 : меньше, 0 : равно, 1 : больше. Что бы не писать много функций для сравнения.
0
|
14.08.2011, 21:54 | 19 | ||||||||||
diagon, strcmp, тогда уж, возвращает не -1 и не +1, а число < 0 и число > 0, соответственно. Выглядит это примерно так:
так лучше
0
|
Higher
|
|
14.08.2011, 21:55 | 20 |
Необязательно, может возвращать что угодно =)
В strcmp не имеет значение длина строк, поэтому можно просто возвращать их разность. А в случае с длинными числами 10 больше 9, к примеру. Поэтому проще всего возвращать константу...
0
|
14.08.2011, 21:55 | |
14.08.2011, 21:55 | |
Помогаю со студенческими работами здесь
20
Действия с длинными числами Операции с длинными числами Класс для работы с длинными числами Операции с длинными числами - неправильно выводится результат Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |