![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| sugee |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 12.6.2005 Репутация: нет Всего: 4 |
Решил вот написать простенький калькулятор...
Это моя первая программа на C#, поэтому возникают глупые вопросы. В настоящий момент у меня есть текстовое поле и четыре кнопки: "1","2","+","=". Достаточно для того чтобы реализовать операцию сложения. Есть обработчики для двух кнопок которые выводят нажатую цифирку в текстовое поле.
Вот теперь хотелось бы эти цифирки сложить. Для начала надо преобразовать текстовые значения textBox-ов в int, затем написать обработчики кнопок "+" и "=". С "равно" все понятно вроде, а вот как быть с плюсом? на ум приходят порядком подзабытые выражения типа "стек", но наверное на самом деле все не так мрачно. В общем вот такой вопрос - как сделать 1+2 |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Для операций с двумя операндами подойдёт и вариант попроще: есть текущее введённое число и предыдущее введённое. Пока не нажата кнопка операции либо "=", в текстбоксе редактируется "текущее". По нажатию на "+", текущее копируется в "предыдущее" и запоминается, что был нажат плюс. При последующем вводе цифры в текстбокс, всё его содержимое очищается и начинается ввод нового "текущего". Теперь если нажать на любую операцию "+", "-", "*", "/" или "=", то над "текущим" и "предыдущим" выполняется операция "плюс", и так далее как в китайском калькуляторе
-------------------- ![]() |
|||
|
||||
| sugee |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 12.6.2005 Репутация: нет Всего: 4 |
Ну, для начала как преобразовать string в int?
|
|||
|
||||
| VisualProgrammerNET |
|
|||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 4 Всего: 6 |
метод Parse (класс Int32).
-------------------- 3 ГОДА НА |
|||
|
||||
| sugee |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 12.6.2005 Репутация: нет Всего: 4 |
А как теперь наоборот int в string, чтобы вывести результат?
|
|||
|
||||
| Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: 2 Всего: 25 |
Вызвать метод ToString
-------------------- |
|||
|
||||
| sugee |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 12.6.2005 Репутация: нет Всего: 4 |
Как не странно всё работает
Дело в том, что это не только моя первая программа на C# но и вообще первая программа под Windows! |
|||
|
||||
| Дрон |
|
||||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 93 |
sugee
Есть универсальный класс Convert для преобразований одних типов в другой. Например если нужно преобразовать в строку, то делаем так:
А обратно:
и т.п. -------------------- Да. Именно так. |
||||
|
|||||
| sugee |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 12.6.2005 Репутация: нет Всего: 4 |
Спасибо сейчас попробую!
|
|||
|
||||
| sugee |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 12.6.2005 Репутация: нет Всего: 4 |
Я рано радовался, получилось только с двумя слогаемыми.
Добавил кнопку "3" и вот до сих пор мучаюсь. 1+2+3 на моем китайском калькуляторе получается 7. Я тут уже дошел до того что трассировочные таблицы рисую, по таблицам между прочим получается все правильно! Вот обработчики кнопок
При объявлении prev и tek(предыдущее и текущее) я обнуляю. Хотя это тоже я погорячился, еще ведь умножать и делить придется. PlusClick пока ничего не начали щелкать равно false. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Вот типо калькулятор, но не китайский
Реагирует на нажатие клавиш от 0 до 9 включительно, Enter (аналогично "=") и Escape (сброс). Поддерживает операции сложения, вычитания, умножения и деления:
З.Ы. как оно работает - лучше не спрашивайте, т.к. это было написано в 0 часов ночи после литра пива -------------------- ![]() |
|||
|
||||
| VisualProgrammerNET |
|
||||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 4 Всего: 6 |
Очень любопытно, зачем вот эта конструкция нужна?
Не проще ли было просто написать
? -------------------- 3 ГОДА НА |
||||
|
|||||
| VisualProgrammerNET |
|
|||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 4 Всего: 6 |
Ну ты, Дуда, даёшь...
Майн вариант:
До конца не тестил, но ошибок вроде нет - 2 ночи всётки. Плюс пересдача линала завтра... (С другими действиями ака вычитание и поддержкой клавы некогда было возиться) Экзешникъ: Это сообщение отредактировал(а) VisualProgrammerNET - 6.2.2006, 02:23 Присоединённый файл ( Кол-во скачиваний: 144 )
Casio.exe.txt 24,00 Kb-------------------- 3 ГОДА НА |
|||
|
||||
| sugee |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 12.6.2005 Репутация: нет Всего: 4 |
mr.DUDA,VisualProgrammerNET - спасибо за код, буду разбираться.
|
|||
|
||||
| passenger |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 9.2.2006 Репутация: нет Всего: нет |
А вот мой вариант
Написал только что на паре по культурологии С классами. Присоединённый файл ( Кол-во скачиваний: 229 )
_________Calculator_______.zip 41,21 Kb |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |