![]() |
|
Модераторы: bsa |
![]()
|
|
| PELIKANN |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.9.2008 Репутация: нет Всего: нет |
Надо сделать калькулятор для целых чисел на С. Он должен производить вычисления с целыми числами неограниченной размерности,операции сложения, вычитания, умножения и деления и вычисления выражений со скобками..
У меня такие вопросы: 1) Неограниченная размерность... есть идея что забивать операнды в строку определенного размера...т.е забиваю в s1=("12348983") потом операцию в переменную op и второй операнд в строку s2....как мне потом перевести символы char в int и обратно.... может конечно моя идея неверна или я ее не так изложил 2) Операции сложения, вычитания, умножения и деления их организовать через switch? но как тогда быть с тем если я ввожу выражение со скобкой? заранее спасибо |
|||
|
||||
| Annihilator |
|
|||
![]() bytegrinder ![]() ![]() Профиль Группа: Участник Сообщений: 493 Регистрация: 21.11.2006 Где: Омск Репутация: 1 Всего: 3 |
Идея - считать столбиком. Как ты обычно на бумаги скалдываешь - выписываешь строки и пошел "5 пишу 2 в уме".
Помню на Паскале еще на первом курсе считал суммы факториалов. Доходило до 50000:
Насколько возможности виндовского калькулятора хватало - все правильно было, когда сверял! -------------------- Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
Я делал такой калькулятор на C#. Если интересно, могу выслать, посмотришь. В принципе языки похожи, разобраться можно.
Ну там правда еще обработчик функций и дробные сила. Это сообщение отредактировал(а) ИванМ - 9.10.2008, 21:29 |
|||
|
||||
| IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 3 Всего: 40 |
Сперва тебе нужна функция для проверки баланса фигурных скобок. И еще функция проанализирующая инфиксное выражение(легче всего сделать стеком). -------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
| PELIKANN |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.9.2008 Репутация: нет Всего: нет |
а что такое инфиксное выражение?) Добавлено через 2 минуты и 20 секунд Annihilator я так и собираюсь деалать...проблема в том как мне потом перевести символы char в int и обратно. |
|||
|
||||
| korian |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 2 Всего: 17 |
если подаються символы 0-9, то будет возвращать соответственную цифру в int'е. кстати, вопрос для знатоков код, написанный выше, является платформо независимым? или правильно писать так:
|
||||||
|
|||||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
абсолютно независим - ASCII это стандарт
Это сообщение отредактировал(а) azesmcar - 10.10.2008, 13:28 |
||||
|
|||||
| PELIKANN |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.9.2008 Репутация: нет Всего: нет |
azesmcar а почему сначала идет
return c - 48; а потом return -1; объясни плиз |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
потому что return c - 48 находиться в if -е, а return -1 - нет..если условие выполняется - второй return не будет выполнен..можно конечно и else написать..но зачем? |
|||
|
||||
| PELIKANN |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.9.2008 Репутация: нет Всего: нет |
azesmcar так а почему return c -48??
я просто недавно начал изучение С...не могу догнать... |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
ASCII код символа "0" - 48, "1" - 49, "2" - 50...и так далее...
отнимаем от символа 48 или '0' - получаем то что нам нужно |
|||
|
||||
| PELIKANN |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.9.2008 Репутация: нет Всего: нет |
о...круто...спасибо
|
|||
|
||||
| IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 3 Всего: 40 |
То есть это алгебрическое выражение, где каждый бинарный оператор находится между своими операндами.Пример: a+b*c. Еще есть префиксные (+a*bc) и постфиксные (abc*+) выражения. -------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
| Pion |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 21.2.2006 Репутация: нет Всего: 1 |
можно воспользоваться какой-нить готовой библиотекой по работе с большими числами, например mpfr...
|
|||
|
||||
| PELIKANN |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.9.2008 Репутация: нет Всего: нет |
Pion это вариант к сожалению не подходит
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |