|
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
|
||||||
Длинная арифметика. Сложение длинных чисел09.08.2017, 19:52. Показов 51485. Ответов 10
Метки нет (Все метки)
Здравствуйте! Впервые за все время изучения C++ решил реализовать длинную арифметику, используя строки. К сожалению, программа прошла только 2 из 6 тестов, хотя код работает. Не ругайтесь особо, это моя первая программа и я обязательно переработаю ее в будущем. Сейчас, прошу оценить данный код и внести какие-либо замечания (если таковые имеются).
Условие: Даны два "длинных" целых неотрицательных числа. Требуется найти результат их сложения. В качестве типа данных для хранения чисел используйте строки. Входные данные: На вход программе подаются два числа, каждое состоит из не более чем 250 цифр и находится в отдельной строке. Выходные данные: Выведите результат их сложения. Примеры: Входные данные: 10 1 Выходные данные: 11 Мое решение:
1
|
||||||
| 09.08.2017, 19:52 | |
|
Ответы с готовыми решениями:
10
Длинная арифметика(вычитание длинных целых чисел) Длинная арифметика. Умножение двух длинных чисел. |
|
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
||||||
| 09.08.2017, 20:28 | ||||||
|
Не могу понять смысл вашего алгоритма. Наверное мой код будет понятнее
![]()
0.50
|
||||||
|
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
|
|
| 09.08.2017, 20:31 [ТС] | |
|
no swear, здравствуйте! Спасибо за ваше замечание. Весь смысл - это сложение в столбик по существующим правилам. Правда, сложновато получилось, я торопился. Но, думаю, что переделаю вскоре и будет намного понятней. Еще раз спасибо за ваш ответ.
0
|
|
|
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
|
| 09.08.2017, 20:40 | |
Сообщение было отмечено Fixer_84 как решение
Решение
Fixer_84, Здравствуйте. Нужно реализовать сложение в столбик максимально приближенно к тому виду которым мы пользуемся при подсчёте ручкой с бумажкой, т. е. я хочу сказать что и для вас это будет удобно и код будет красиво выглядеть и даже если вы, вдруг через 2 - 3 года, снова захотите посмотреть на этот код то вам будет легко всё восстановить(вспомнить) и думать("А что же я здесь написал...") вам не придётся.
Ну здесь я так и сделал, т. е. максимально понятно для себя я реализовал сложение в столбик. 9 + 9 = 18 - > 18 mod 10 в массив, 18 div 10 в остаток (в переменную с).
1
|
|
|
1615 / 1181 / 552
Регистрация: 08.01.2012
Сообщений: 4,558
|
|
| 09.08.2017, 20:46 | |
|
1
|
|
|
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
|
||||||
| 09.08.2017, 22:38 | ||||||
1
|
||||||
|
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
|
|||||||||||
| 09.08.2017, 23:11 [ТС] | |||||||||||
|
no swear, спасибо за ваше замечание
Я немного переделал код и мне удалось сдать задачу Он проще моего первого, но не проще вашего, хотя теперь можно разобраться без особого труда. Я обошелся только строками (без использования массивов).Еще один рабочий код:
повар1, спасибо, что проявили внимание. Добавлено через 15 минут Вот урезанная версия того же самого:
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 18.10.2018
Сообщений: 53
|
|
| 03.11.2018, 12:27 | |
|
Почему -48
Добавлено через 44 секунды no swear почему -48 а не другой цифры Добавлено через 2 минуты -48?
0
|
|
|
736 / 700 / 110
Регистрация: 29.05.2015
Сообщений: 4,260
|
||
| 03.11.2018, 12:35 | ||
|
0
|
||
|
44 / 20 / 14
Регистрация: 23.10.2018
Сообщений: 103
|
||||||
| 03.11.2018, 14:20 | ||||||
0
|
||||||
|
0 / 0 / 0
Регистрация: 15.08.2019
Сообщений: 5
|
|
| 12.11.2020, 22:27 | |
|
Добрый день. Я понимаю, что эту задачу решали очень давно, просто я только сейчас столкнулся с этой темой и обучаюсь программированию. У меня есть пара вопросов и комментариев к вашему коду. Он очень компактный и хороший. В принципе, он даже работает, но немного не так, как хотелось бы. Я его скопировал, и у меня он уже вывел сначала мусор в массиве, потом нули и только потом ответ. Согласитесь, что это немного не то, чего пользователь ждал бы от программы. +у вас много обращений к несуществующим элементам массива. Например: в 15 строчке вы присваиваете в массив 0 элементов 2 элемент строки, выглядит нормально, но отсчёт строк начинается с 0 и по факту вы присвоили 3 элемент числа, а в двухзначном числе его просто не существует. Или ещё: 21 строчка. Вы вызываете 250 элемент массива, но его не существует. У массивов отсчёт идёт с нуля, поэтому у массива из 250 элементов, крайним будет 249. Получилось длинно, но эти вопросы меня мучают. Надеюсь, что вы прочитаете и ответите
P.s. и ещё у вас получилось магическое число в строке 15. Почему -48? Это понятно только вам, а при чтении другого программиста, он не сразу, а может и вообще не поймёт назначение данного числа Адресовано no swear Добавлено через 10 минут no swear, надеюсь, вы увидите Добавлено через 1 минуту Damdador, если мы захотим вывести, предположим, int(string[0]), а string = 1234, в теории он должен вывести 1, но на самом деле программы выведет 49, т.к. 1 - в таблице аски кодов - это 49. Поэтому, чтобы мы получили 1, 2, 3 и тд, нам надо от значения в аски коде отнять 48.
0
|
|
| 12.11.2020, 22:27 | |
|
Помогаю со студенческими работами здесь
11
Длинная арифметика: умножение двух длинных чисел
Длинная арифметика. Сложение чисел Сложение больших чисел (длинная арифметика) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|