Сложение двух чисел, представленных в виде строк
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Подскажите как на Си организовать сложения двух длинных целых чисел, представленных в виде строк, используя двунаправленные списки.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Не знаю при чём здесь двунаправленные списки. Я бы складывал два таких числа просто "столбиком". Т.е. результат будет тоже строка, размером [max(len1, len2) + 1]. Пробегаем в цикле, начиная с конца, и складываем поразрядно. Если есть переполнение, то устанавливаем специальный флажок, который на следующей итерации даст инкремент локальной суммы и сбросится.
P.S. Название топика сменил я. Имя топика должно отображать тему вопроса. Береги своё время и время твоих собеседников.
P.S. Название топика сменил я. Имя топика должно отображать тему вопроса. Береги своё время и время твоих собеседников.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
В том то и загвоздка, что нужно обязательно (!) использовать двунаправленные списки (
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Без проблем. Алгоритм тот же, кроме небольшой мелочи. На каждой итерации вместо того, чтобы помещать поразрядную сумму в строку, создаём новый элемент списка, добавляем его в голову и заносим туда результат. При выводе результирующего числа на экран придётся список просматривать задом наперёд, так что, если решать задачу с помощью списка то, без его двунаправленности действительно не обойтись. Дерзай.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.