![]() |
|
Модераторы: 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 |
|||
|
||||
| Gesha |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 5.10.2005 Репутация: нет Всего: 2 |
Мой вариант круче всех!
--------------------
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Gesha, низачОт
-------------------- ![]() |
|||
|
||||
| Nestap |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 10.10.2008 Репутация: нет Всего: 0 |
Рибята вот такои вапрос!
ести стринг "25+545+457*25+52/2" в (плимер) как делать чтоб всео выпольнось по теорие матиматике? ну чтоб : 1 : 457*25 2: 52/2 .... плизз --------------------
<? echo "Nestap";?> |
|||
|
||||
| Remember |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 25.2.2007 Где: Самара Репутация: нет Всего: 1 |
Советую делать с помощью рекурсивного спуска.
Пример, реализации приведен в книге Герберта Шилдта "Полный справочник по C#" глава 26. Когда-то делал, пришлось достаточно повозиться.. |
|||
|
||||
| Nestap |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 10.10.2008 Репутация: нет Всего: 0 |
Remember
а где взять книгу? скиниш на емаил? а нету токая функтия чтоб авто? а может ктота уже зделал? и проста поделется с нами! --------------------
<? echo "Nestap";?> |
|||
|
||||
| Remember |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 25.2.2007 Где: Самара Репутация: нет Всего: 1 |
Ну код наверно, есть в файлах к книге.. Герберт Шилдт с тобой и поделиться Поищи книгу.. кто ищет.. тот всегда найдет.. |
|||
|
||||
| taiven |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 302 Регистрация: 30.6.2008 Репутация: нет Всего: 9 |
тут |
|||
|
||||
| mosya |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 15.1.2009 Где: Киев Репутация: нет Всего: нет |
Вклинюсь в темку
Вот вроде доделал свой калькулятор, но вот есть одно "но"...не работает "равно" по нажатию клавиши Enter... и то только в том случае когда активна форма... В общем вот... сам калькулятор: http://depositfiles.com/files/uv08itshq кому не лень можете посмотреть что не так?... И так как это мой первый опыт в C# рад буду слышать любые замечания или пожелания как можно было сделать лучше и проще Заранее спасибо! |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |