0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 28
|
||||||
1 | ||||||
Арифметические операции над числами02.02.2017, 13:57. Показов 3578. Ответов 19
Метки нет (Все метки)
Пытаюсь написать программу, производящую арифметические операции над числами, которые не входят в стандартный диапазон. Суть: каждое число представляется в строковой форме и посимвольно производятся операции с каждой цифрой этих чисел. Проблема состоит в том, что числа одинаковой длины складывает нормально. Но, если числа имеют разную длину, то начинаются ошибки. Например: 2+99 выводит 111.
0
|
02.02.2017, 13:57 | |
Ответы с готовыми решениями:
19
Арифметические операции над строками Арифметические действия над числами Арифметические операции с числами в разных сс Операции над числами |
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 28
|
|
02.02.2017, 15:27 [ТС] | 3 |
Это предполагается не в питоне использовать, но, например, и в паскале алгоритм пойдёт. Там ограничения по диапазонам. Просто, мне проще на питоне писать
0
|
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 28
|
|
02.02.2017, 15:49 [ТС] | 5 |
Все можно. Дело в диапазоне. Паскаль, например, не потянет число, которое больше 1..+2*1063 -1.
0
|
02.02.2017, 16:02 | 6 |
Slavjanych, ну так объясните про диапазон.
Насколько я помню, Паскаль оперирует с теми же числами, с которыми оперирует процессор. Питон в этом отношении более гибок. У него и встроеные типы с собственным управлением, и есть сторонние пакеты для работы с ваще большими числами. Правда, быстро такие числа работать не могут. Да, вы в курсе, что у разных типов чисел разный диапазон? У float-ов диапазон, конечно, побольше будет, но там может точность хромать.
0
|
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 28
|
|
02.02.2017, 16:04 [ТС] | 7 |
Я пишу программу для работы только с целыми числами
0
|
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 28
|
|
02.02.2017, 16:09 [ТС] | 9 |
Вопрос, изначально, вообще, стоял другой. Я не могу понять, где в коде ошибка, из-за которой неправильно считает
0
|
02.02.2017, 16:14 | 10 |
Slavjanych, от того, какой диапазон вам нужен, зависит, а нужно ли вам вообще это писать.
Может, хватит встроеных питоновских типов. Может, имеет смысл заюзать готовый сторонний пакет, вроде был какой-то для Питона, bigint или что-то типа того.
0
|
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 28
|
|
02.02.2017, 16:18 [ТС] | 11 |
Планируется использование диапазонов от
0
|
02.02.2017, 16:23 | 12 |
Slavjanych, в инете пацаны гутарят - целые в Питоне неограничены.
Я сейчас проверил ваш диапазон - работает, без дополнительных телодвижений: Код
print (2*10**150+1) 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
0
|
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 28
|
|
02.02.2017, 16:25 [ТС] | 13 |
А паскаль не поймёт такой диапазон уже, на сколько я знаю
0
|
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 28
|
|
02.02.2017, 16:30 [ТС] | 15 |
Именно так. На питоне мне писать попроще. Синтаксис простой
Добавлено через 2 минуты Главное - алгоритм разработать. В питоне для меня это легче
0
|
02.02.2017, 16:31 | 16 |
Slavjanych, ну что ж, безумству храбрых поём мы песню.
Паскаль - мёртвый язык, и писать что-то под него я считаю пустой тратой времени. Если всё же очень хочется - то в первую очередь надо искать готовые решения для паскаля, наверняка вы не первый, кто столкнулся с этой проблемой. Добавлено через 1 минуту https://www.google.by/webhp?q=... for+pascal
0
|
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 28
|
|
02.02.2017, 16:31 [ТС] | 17 |
Это понятно, что мёртвый. Но преподу только он нужен
0
|
02.02.2017, 16:50 | 18 |
Slavjanych, посмотрел код, какой-то странный алгоритм у вас.
Тут по соседству похожую задачу спрашивали, про умножение многочленов. Просто у вас не иксы, а десятки. Работа со списками в Python Но в целом подход сохраняется.
1
|
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 28
|
|
02.02.2017, 16:52 [ТС] | 19 |
dondublon, спасибо)
0
|
02.02.2017, 17:10 | 20 | |||||
А, вам же сложение нужно? Тогда так:
Считать цифры начинаем от конца, а не от начала. Если от начала - легко запутаться.
0
|
02.02.2017, 17:10 | |
02.02.2017, 17:10 | |
Помогаю со студенческими работами здесь
20
Арифметические операции Арифметические операции Арифметические операции Задача на арифметические операции Арифметические операции в списках Как сделать число положительным через арифметические операции? Операции над строками Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |