Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Калькулятор неограниченной размерности на Cи, Калькулятор для целых цисел на C 
:(
    Опции темы
PELIKANN
  Дата 9.10.2008, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.9.2008

Репутация: нет
Всего: нет



Надо сделать калькулятор для целых чисел на С. Он должен производить вычисления с целыми числами неограниченной размерности,операции сложения, вычитания, умножения и деления и вычисления выражений со скобками..

У меня такие вопросы:
1) Неограниченная размерность...

есть идея что забивать операнды в строку определенного размера...т.е забиваю в s1=("12348983") потом операцию в переменную op и второй операнд в строку s2....как мне потом перевести символы char в int  и обратно....

может конечно моя идея неверна или я ее не так изложил  smile 

2) Операции сложения, вычитания, умножения и деления


их организовать через switch?

но как тогда быть с тем если я ввожу выражение со скобкой?


заранее спасибо
PM MAIL   Вверх
Annihilator
Дата 9.10.2008, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

Репутация: 1
Всего: 3



Идея - считать столбиком. Как ты обычно на бумаги скалдываешь - выписываешь строки и пошел "5 пишу 2 в уме".
Помню на Паскале еще на первом курсе считал суммы факториалов. Доходило до 50000:
Код

1! + 2! + ... + 50000!

Насколько возможности виндовского калькулятора хватало - все правильно было, когда сверял!smile


--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
ИванМ
Дата 9.10.2008, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



Я делал такой калькулятор на C#. Если интересно, могу выслать, посмотришь. В принципе языки похожи, разобраться можно.
Ну там правда еще обработчик функций и дробные сила.

Это сообщение отредактировал(а) ИванМ - 9.10.2008, 21:29
PM MAIL   Вверх
IKM2007
Дата 9.10.2008, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: 3
Всего: 40



Цитата(PELIKANN @  9.10.2008,  20:56 Найти цитируемый пост)
но как тогда быть с тем если я ввожу выражение со скобкой?

Сперва тебе нужна функция для проверки баланса фигурных скобок. И еще функция проанализирующая инфиксное выражение(легче всего сделать стеком).


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
PELIKANN
Дата 9.10.2008, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.9.2008

Репутация: нет
Всего: нет



Цитата(IKM2007 @ 9.10.2008,  21:52)
Цитата(PELIKANN @  9.10.2008,  20:56 Найти цитируемый пост)
но как тогда быть с тем если я ввожу выражение со скобкой?

Сперва тебе нужна функция для проверки баланса фигурных скобок. И еще функция проанализирующая инфиксное выражение(легче всего сделать стеком).

а что такое инфиксное выражение?)

Добавлено через 2 минуты и 20 секунд
Annihilator я так и собираюсь деалать...проблема в том как мне потом перевести символы char в int  и обратно.
PM MAIL   Вверх
korian
Дата 10.10.2008, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 2
Всего: 17



Цитата(PELIKANN @  9.10.2008,  21:04 Найти цитируемый пост)
проблема в том как мне потом перевести символы char в int  и обратно.

Код

int CharToCifra(char c)
{
    return c - '0';
}

если подаються символы 0-9, то будет возвращать соответственную цифру в int'е.

кстати, вопрос для знатоков  smile 
код, написанный выше, является платформо независимым? или правильно писать так:
Код

int CharToCifra(char c)
{
    switch(c)
    {
        case '0': return 0;
        case '1': return 1;
        case '2': return 2;
        case '3': return 3;
        case '4': return 4;
        case '5': return 5;
        case '6': return 6;
        case '7': return 7;
        case '8': return 8;
        case '9': return 9;
    }
    return -1;
}


PM   Вверх
azesmcar
Дата 10.10.2008, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата

код, написанный выше, является платформо независимым? или правильно писать так:


абсолютно независим -  ASCII это стандарт
Код

int CharToCifra(char c)
{
    if ( c >= '0' && c <= '9')
        return c - 48;
    return -1;
}



Это сообщение отредактировал(а) azesmcar - 10.10.2008, 13:28
PM   Вверх
PELIKANN
Дата 10.10.2008, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.9.2008

Репутация: нет
Всего: нет



azesmcar а почему сначала идет 
return c - 48;   а потом
return -1;

объясни плиз
PM MAIL   Вверх
azesmcar
Дата 10.10.2008, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата

azesmcar а почему сначала идет 
return c - 48;   а потом
return -1;

объясни плиз 


потому что return c - 48 находиться в if -е, а return -1 - нет..если условие выполняется - второй return не будет выполнен..можно конечно и else написать..но зачем?

PM   Вверх
PELIKANN
Дата 10.10.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.9.2008

Репутация: нет
Всего: нет



azesmcar так а почему return c -48?? 
я просто недавно начал изучение С...не могу догнать... smile 
PM MAIL   Вверх
azesmcar
Дата 10.10.2008, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



ASCII код символа "0" - 48, "1" - 49, "2" - 50...и так далее...
отнимаем от символа 48 или '0' - получаем то что нам нужно
PM   Вверх
PELIKANN
Дата 10.10.2008, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.9.2008

Репутация: нет
Всего: нет



о...круто...спасибо
PM MAIL   Вверх
IKM2007
Дата 10.10.2008, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: 3
Всего: 40



Цитата(PELIKANN @  9.10.2008,  22:04 Найти цитируемый пост)
а что такое инфиксное выражение?)

То есть это алгебрическое выражение, где каждый бинарный оператор находится между своими операндами.Пример: a+b*c.
Еще есть префиксные (+a*bc) и постфиксные (abc*+) выражения.


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
Pion
Дата 10.10.2008, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 21.2.2006

Репутация: нет
Всего: 1



можно  воспользоваться какой-нить готовой библиотекой по работе с большими числами, например mpfr...
PM MAIL   Вверх
PELIKANN
Дата 10.10.2008, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.9.2008

Репутация: нет
Всего: нет



Pion это вариант к сожалению не подходит
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.2011 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.