Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/14: Рейтинг темы: голосов - 14, средняя оценка - 4.93
sugee
0 / 0 / 1
Регистрация: 03.01.2011
Сообщений: 62
1

Простая арифметическая операция на калькуляторе

14.04.2012, 00:13. Просмотров 2589. Ответов 6
Метки нет (Все метки)

Решил вот написать простенький калькулятор...
Это моя первая программа на C#, поэтому возникают глупые вопросы.
В настоящий момент у меня есть текстовое поле и четыре кнопки:
"1","2","+","=".
Достаточно для того чтобы реализовать операцию сложения.
Есть обработчики для двух кнопок которые выводят нажатую цифирку
в текстовое поле.
C#
1
2
3
4
5
6
7
8
9
 private void button1_Click(object sender, System.EventArgs e)
{
this.textBox1.Text = this.button1.Text;
}
        
private void button2_Click(object sender, System.EventArgs e)
{
this.textBox1.Text = this.button2.Text;
}
Вот теперь хотелось бы эти цифирки сложить.
Для начала надо преобразовать текстовые значения textBox-ов в int,
затем написать обработчики кнопок "+" и "=".
С "равно" все понятно вроде, а вот как быть с плюсом?
на ум приходят порядком подзабытые выражения типа "стек", но наверное на самом деле все не так мрачно.
В общем вот такой вопрос - как сделать 1+2.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2012, 00:13
Ответы с готовыми решениями:

арифметическая операция
помогите написать функцию арифметической операции с дробными чмслами и если дробь...

Арифметическая операция в условии поиска
Здравствуйте! Добавлено через 17 минут Здравствуйте! Есть вопрос по поиску во внутренней базе...

Арифметическая операция (Intel 8085)
Реализация арифметических операций в симуляторе микропроцессора. Составить программу на...

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

Факториал как арифметическая операция
Используется GNU Prolog. Можно ли каким-то образом определить ! (ну или какой-нибудь другой...

6
Dragon_Oleg
6 / 6 / 1
Регистрация: 22.06.2010
Сообщений: 239
16.04.2012, 13:23 2
Вот глянь
http://progs.biz/csharp/win/lessons/001.aspx
0
sugee
0 / 0 / 1
Регистрация: 03.01.2011
Сообщений: 62
21.04.2012, 15:53  [ТС] 3
Спасибо за полезную ссылочку!
Как работать с двумя кнопками(числами) я уже сам разобрался, а если их больше?
Вот добавил ещё одну кнопку и пытаюсь сложить 3 числа.
1+2+3 у меня получается почему-то 7, если складываю 2 числа - всё правильно.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
private void button1_Click(object sender, System.EventArgs e) //кнопка 1
{
this.textBox1.Text = this.button1.Text;
tek = Int32.Parse(this.button1.Text);
}
 
private void button2_Click(object sender, System.EventArgs e) //кнопка 2
{
this.textBox1.Text = this.button2.Text;
tek = Int32.Parse(this.button2.Text);
}
 
private void button3_Click(object sender, System.EventArgs e) //кнопка +
{
prev = tek;
if(PlusClick == true) prev = prev + tek;
PlusClick = true;
}
 
private void button5_Click(object sender, System.EventArgs e) //кнопка 3
{
this.textBox1.Text = this.button5.Text;
tek = Int32.Parse(this.button5.Text);
}
 
private void button4_Click(object sender, System.EventArgs e) //кнопка =
{
if(PlusClick == true) result = prev + tek;
this.textBox1.Text = result.ToString();
}
При объявлении prev и tek(предыдущее и текущее) я обнуляю.
PlusClick пока ничего не начали щелкать равно false.
0
boombastik
7 / 7 / 11
Регистрация: 13.02.2007
Сообщений: 1,255
21.04.2012, 16:24 4
Шаг 0: (tek = 0, prev = 0, result = 0)
Шаг 1: нажали 1 (tek = 1, prev = 0, result = 0)
Шаг 2: нажали + (tek = 1, prev = 1, result = 0)
Шаг 3: нажали 2 (tek = 2, prev = 1, result = 0)
Шаг 4: нажали + (tek = 2, prev = 4, result = 0) сначала prev = tek, затем еще + tek
Шаг 5: нажали 3 (tek = 3, prev = 4, result = 0)
Шаг 6: нажали = (tek = 3, prev = 4, result = 7)

Такие вещи обычно в Debug-режиме отлавливают.

Удачи,
Владимир
0
boombastik
7 / 7 / 11
Регистрация: 13.02.2007
Сообщений: 1,255
21.04.2012, 16:30 5
По теме: если планируешь сделать самый простой калькулятор без учета приоритетов операций (например, / и * имеют более высокий приоритет нежели + и -) и без скобочек, то достаточно хранить конечное значение result, никаких промежуточных больше не требуется.

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

Счастья вам,
Владимир
0
sugee
0 / 0 / 1
Регистрация: 03.01.2011
Сообщений: 62
21.04.2012, 19:46  [ТС] 6
Цитата Сообщение от boombastik
Такие вещи обычно в Debug-режиме отлавливают.
Почему-то у меня отладчик не работает.
У меня Delphi-2005, может в этом дело, я слышал там вообще много багов...
0
boombastik
7 / 7 / 11
Регистрация: 13.02.2007
Сообщений: 1,255
22.04.2012, 01:35 7
Достань Visual Studio.NET 2005, это лучшая среда разработки под .NET
Если возникнут трудности с лицензиями, можешь скачать Visual C# Express с сайта Microsoft: http://msdn.microsoft.com/vstudio/express/visualcsharp/

Прод Delphi 2005 ничего сказать не могу, не работал.

Удачи,
Владимир
0
22.04.2012, 01:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2012, 01:35

Арифметическая операция над целыми числами
Выполнить арифметические операции над целыми числами(в формате "байт со знаком") +59+(-59) . В...

Простейшая арифметическая операция. проверка на числовой ввод
Хотел сделать проверку на ввод числа, но моя реализация не работает. Прошу помочь разобраться. ...

Простая операция вычисления
Здравствуйте,есть такая задачка: есть select и input. нужно умножить выбранный option у...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru