|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Ошибка вычисления деления калькулятора на С# |
|
C/C++ - Ошибка вычисления деления калькулятора на С#
|
Новый участник Сообщения: 45 |
Профиль | Отправить PM | Цитировать
Здрасьте. мною написан, уже в полузавершенном варианте инженерный калькулятор..В момент написания кода к действию "деления" само действие работало прекрасно, но после добавления след строк по действиям до существующего конца программы..возникает непонятная ошибка) (причем ничего изменено не было). Подскажите в чем дело..почти дописан(
Папочку с кодом предлагаю для рассмотрения. |
|
Отправлено: 20:18, 25-10-2011 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Ksenya, отслеживаю тему, все никак руки не дойдут до трассировки.
Опиши пожалуйста на словах принцип разбора выражения и его расчета. Т.е. при введении скобок и сложных выражений, с разделением приоритетов выполнения операций, могут применяться различные типы разбора строки. Как пример - Польская обратная запись. Она может строиться с помощью стека, может строиться с помощью дерева. Я в свое время писал на Delphi не слишком быстрый, многопроходный разбор выражения в дерево. OPZ - как я понимаю и есть Польская обратная запись. С принципом ее работы разобрались? К ночи постараюсь взглянуть на код. ---- ferget, LilLoco, |
------- Отправлено: 08:05, 30-10-2011 | #31 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 45
|
Профиль | Отправить PM | Цитировать Здрасьте, lxa85.) честно говоря не совсем) да, на 2 курсе опз рассматривали, и для моего калькутера я выбрала наиболее подходящий вариант опз. исходник. но он применим для консольного калькулятора, это во-первых, а во-вторых, там совершенно другие входные данные, которые меня и смущают, пусть я переименую их, когда распознаю, к примеру как сейчас - числовые данные, которые я ввожу в поле - label_number.Text =(с обработкой операции и получением резалта)= Convert.ToString(ExecuteOperation(DoubResul, Num, CurrOper));.
Но как использовать определяемые, с помощью ОПЗ, данные для наших операций..просто мозги набекрень, это что мне теперь под один этот класс придется переделывать всю главную программу? потому как: //заменить умножение или деление в строке InBrackets на посчитанное значение public void repMD(int i) { double MD; if (InBrackets[i] == '*') MD = GetLeftOperand(i) * GetRightOperand(i);// ладно, пускай в нашем случае-вместо MD-результат прописывался как-DoubResul else MD = GetLeftOperand(i) / GetRightOperand(i); ReplaceExp(i, MD); Calc(); //вернуться в метод Calc - получается, что-то вроде взаимной рекурсии } и систему ОПЗ для выражений со скобками? |
Отправлено: 19:13, 30-10-2011 | #32 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать я трассировку то конечно выполню, но я ничего не понял, из того, что ты сказала
Напиши словами. Цитата Ksenya:
repMD - что за зверь? Как звучит полностью? Система ОПЗ со скобками вообще не работает. Как сказать то... Первая задача - перевести выражение в ОПЗ. Вторая задача - по полученной ОПЗ посчитать выражение. Блок схемку приведи, иль еще чего. Т.е. нужны смысловые блоки (ищем операцию, инициализируем переменные и т.п.) и тогда можно будет программу структурировать и понимать, за что отвечает тот или иной блок операторов. ---- Программы скачал, сейчас буду разбираться. |
|
------- Отправлено: 21:15, 30-10-2011 | #33 |
Новый участник Сообщения: 45
|
Профиль | Отправить PM | Цитировать ага, значит, это выражение выдает нам ответ, вычисленный по методу расчета операций( "+","-","*","/" и других) и переведенный в окошко label_number.Text в строковом формате. т.е сначала после нажатия кнопок с текстами: цифра - знак операции-цифра ..срабатывает метод ReturnOperation(он выдает то или иное название операции), ..затем..после нажатия кнопки "="..срабатывает вложенный цикл методов: ExecuteOperation(DoubResul, Num, CurrOper)) - get_answer();- OperationEvent(object sender, EventArgs e). Как теперь включать опз, не меняя координально структуру, причем ведь еще есть операции: "√", возведения в степень(включу потом со старой версии калькулятора) ..
ума не приложу. |
Отправлено: 22:33, 30-10-2011 | #34 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - [решено] Калькулятор.Ошибка вычисления ариф действий | Ksenya | Программирование и базы данных | 6 | 22-10-2011 01:28 | |
CMD/BAT - [решено] Остаток от деления | Forpost | Скриптовые языки администрирования Windows | 2 | 25-03-2011 23:58 | |
2003/XP/2000 - EXCEL вместо калькулятора | Vygov | Microsoft Office (Word, Excel, Outlook и т.д.) | 3 | 10-03-2011 14:55 | |
Загрузка - Win7 не загружается после деления HDD Акронисом | vadimovich2 | Microsoft Windows 7 | 6 | 09-04-2010 20:42 | |
Скин для калькулятора | Vlad Drakula | Программирование и базы данных | 12 | 01-06-2004 08:55 |
|