Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / необычный калькулятор / 22 сообщений из 22, страница 1 из 1
07.02.2013, 00:07
    #38140927
Андрюхин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
Всем привет! Решил написать калькулятор, который выполняет простые арифмет операции (слож,умн,деление,вычит).

хочу сделать необычный калькулятор..т.е. он будет состоять из двух полей - первое поле (сюда будем записывать числа с которыми нужно выполнить матем операции), второе поле(сюда будет показываться результ мат операций).

Хотелось бы для поля ввода чисел - сделать условие - приоритеты вычислений мы будем указывать с помощью скобок и количество вложенности скобок и количество выполняемых математ операций в одной строке не будет ограничено.
например (5-3)+2=4

проблема как в поле edit1 сделать так, чтобы учитывались приоритеты ?
...
Рейтинг: 0 / 0
07.02.2013, 00:11
    #38140930
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
...
Рейтинг: 0 / 0
07.02.2013, 08:05
    #38141049
Андрюхин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
может не использовать алгоритм ОПЗ, а что нить типа сначала найти в выражении самую вложенную скобку (3-4)+(4-(1*3(1-9))) сначала вычислим 1-9, далее на уровень вверх...использовать какой нибудь цикл например for each..вроде как проще будет же..только как написать это не знаю..не силен в программировании..помогите(
...
Рейтинг: 0 / 0
07.02.2013, 08:19
    #38141054
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
Андрюхинможет не использовать алгоритм ОПЗ...Почему?
По следующей ссылке и примеры кода есть: Обратная польская запись: примеры реализации .
...
Рейтинг: 0 / 0
07.02.2013, 08:22
    #38141055
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
P.S.: кстати ссылка взята из описания алгоритма на ВикипедиИ. Не ленитесь читать!
...
Рейтинг: 0 / 0
07.02.2013, 08:33
    #38141061
Андрюхин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
skyANA, алгоритм который я предложил мне кажеться он проще..только реализовать его пока не могу(
...
Рейтинг: 0 / 0
07.02.2013, 08:44
    #38141066
Андрюхин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
интересно, а какой цикл лучше использовать для того чтобы пробегаться по выражению?
...
Рейтинг: 0 / 0
07.02.2013, 09:16
    #38141093
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
Андрюхин, не нравится обратная польская нотация, используйте польскую нотацию .
...
Рейтинг: 0 / 0
07.02.2013, 09:17
    #38141094
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
Андрюхининтересно, а какой цикл лучше использовать для того чтобы пробегаться по выражению?skyANA Обратная польская запись: примеры реализации .
...
Рейтинг: 0 / 0
07.02.2013, 09:23
    #38141099
Андрюхин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
skyANA,
я вчера с другом обсуждал..по прямую нотациюю..решили что лучше..пробегаться по выражению...циклом..и рекурсией..проблема в самой реализации((
...
Рейтинг: 0 / 0
07.02.2013, 09:27
    #38141104
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
Андрюхин, я Вам ссылку дал, там тоже пробегаются циклом по выражению. Посмотрите.
...
Рейтинг: 0 / 0
07.02.2013, 09:32
    #38141113
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
Андрюхин.решили что лучше..пробегаться по выражению...циклом..и рекурсией..проблема в самой реализации((
рекурсивный спуск примените
...
Рейтинг: 0 / 0
07.02.2013, 09:36
    #38141116
Андрюхин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
skyANA,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
  private IEnumerable<string> Separate(string input)
        {
            List<string> inputSeparated = new List<string>();
            int pos = 0;
            while (pos < input.Length)
            {
                string s = string.Empty + input[pos];
                if (!standart_operators.Contains(input[pos].ToString()))
                {
                    if (Char.IsDigit(input[pos]))
                        for (int i = pos + 1; i < input.Length &&
                            (Char.IsDigit(input[i]) || input[i] == ',' || input[i] == '.'); i++)
                            s += input[i];
                    else if (Char.IsLetter(input[pos]))
                        for (int i = pos + 1; i < input.Length &&
                            (Char.IsLetter(input[i]) || Char.IsDigit(input[i])); i++)
                            s += input[i];
                }
                yield return s;
                pos += s.Length;
            }
        }


вот она эта пробежечка да?
...
Рейтинг: 0 / 0
07.02.2013, 09:39
    #38141118
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
Андрюхин, да.
...
Рейтинг: 0 / 0
07.02.2013, 10:29
    #38141186
fortibransa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
Вот оно тебе надо
Код: c#
1.
double v = (double)new System.Xml.XmlDocument().CreateNavigator().Evaluate(System.Xml.XPath.XPathExpression.Compile("(1+3*2-(5-6)*-3) div 2"))
...
Рейтинг: 0 / 0
07.02.2013, 11:17
    #38141295
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
Андрюхин,

Не парься, просто поставь себе lisp машину. Sbcl или clisp.
Готовый калькулятор.
...
Рейтинг: 0 / 0
07.02.2013, 12:28
    #38141475
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
MasterZivАндрюхин,

Не парься, просто поставь себе lisp машину. Sbcl или clisp.
Готовый калькулятор.
Андрюхин,
меньше чем на Mathematica 9 - не соглашайся
...
Рейтинг: 0 / 0
07.02.2013, 17:44
    #38142229
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
fortibransa
Код: c#
1.
double v = (double)new System.Xml.XmlDocument().CreateNavigator().Evaluate(System.Xml.XPath.XPathExpression.Compile("(1+3*2-(5-6)*-3) div 2"))



Можно ещё так:
Код: c#
1.
double v = (double)new System.Data.DataTable().Compute("(1+3*2-(5-6)*-3) / 2", "");
...
Рейтинг: 0 / 0
07.02.2013, 18:16
    #38142309
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
petalvik,

это ж баян
...
Рейтинг: 0 / 0
07.02.2013, 20:11
    #38142469
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
Изопропилpetalvik,

это ж баян

Ну баян, да. На боянистый вопрос - боянистый ответ. :)
...
Рейтинг: 0 / 0
10.02.2013, 14:12
    #38145051
fortibransa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
Изопропилpetalvik,

это ж баян Ну дык и это не ПТ
...
Рейтинг: 0 / 0
10.02.2013, 16:51
    #38145142
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
необычный калькулятор
fortibransaНу дык и это не ПТ
я уже не уверен
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / необычный калькулятор / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]