Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
PowerMet
0 / 0 / 0
Регистрация: 24.10.2012
Сообщений: 33
1

Последовательное выполнение арифметических действий в калькуляторе

07.12.2012, 20:56. Просмотров 1448. Ответов 4
Метки нет (Все метки)

Мне нужно сделать так, то бы калькулятор выполнял последовательные действия, то есть, если нажимать последовательно 5 + 3 - 2 = выводило 4
Пока у меня были цели сделать так, что бы при нажатии равно повторялось последнее действие, и что бы при многократном нажатии кнопки действия без введения какого-либо числа ничего не происходило.
Как сделать так, что бы калькулятор совершал действия последовательно, я, пока, не догадываюсь. Делал точку останова, до действия с минусом в процедуре равно просто не доходит.
Вот некоторые элементы кода, в принципе они все похожи, так как приведу не все. Ввод цифр, по-моему, не влияет на совершенные действия, но приведу пример, на всякий случай
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        double x, y = 0;
        int  c = 0;
        bool r,dr,h;
        public Form1()
        {
            InitializeComponent();
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            if (Result.Text == "0," & dr == true)//если введена только запятая 
            { 
                Result.Text = Result.Text + "1";//добавляем цифру
                h = true;//первая цифра введена
            }
            else
            {
                if (r == true)//если нажато равно
                { sbros.PerformClick(); }//сбрасываем все
                if ((c > 0) && (h == false))//если были действия и первая цифра не введена
                {
                    Result.Text = "0";//сбрасываем значение в поле
                    h = true;//первая цифра введена
                }
                x = Convert.ToDouble(Result.Text);//конвертирует число из поля в x
                if (x == 0)//если первая цифра ноль
                { Result.Text = Result.Text.Remove(Result.Text.Length - 1); }//удаляем ноль
                Result.Text = Result.Text + "1";//добавляем цифру
            }
        }
 
 private void delenie_Click(object sender, EventArgs e)
        {
                if (c > 0)//если действие совершено
                {
                    x = 0;//обнуляем х
                    ravno.PerformClick();//вызываем процедуру равно
                }
                else
                {
                    y = Convert.ToDouble(Result.Text);//запоминаем значение из поля
                }
                c = 1;//действие совершено
                dr = false;//сброс счетчика дроби
                h = false;
        }
 
 private void minus_Click(object sender, EventArgs e)
        {
 
            if (c > 0)
            {
                x = 0;
                ravno.PerformClick();
            }
            else
            {
                y = Convert.ToDouble(Result.Text);
            }
            c = 3;
            dr = false;
            h = false;
        }
 
        private void plus_Click(object sender, EventArgs e)
        {
                if (c > 0)
                {
                    x = 0;
                    ravno.PerformClick();
                }
                else
                {
                    y = Convert.ToDouble(Result.Text);
                }
                c = 4;
                dr = false;
                h = false;
            
        }
 
private void ravno_Click(object sender, EventArgs e)
        {
          if (r == true)//если было нажато равно
          { y = Convert.ToDouble(Result.Text); }
          else
          { x = Convert.ToDouble(Result.Text); }
          switch (c)
          { case 1:
          y=y/x;
          Result.Text = y.ToString();
          r = true;
          break;
          case 2:
          y=y*x;
          Result.Text = y.ToString();
          r = true;
          break;
          case 3:
          y = y - x;
          Result.Text = y.ToString();
          r = true;
          break;
          case 4:
          y = y + x;
          Result.Text = y.ToString();
          r = true;
          break;
          case 5:
          y = Math.Pow(y, 1/x);
          Result.Text = y.ToString();
          r = true;
          break;
          case 6:
          y = Math.Pow(y, x);
          Result.Text = y.ToString();
          r = true;
          break;
          }
        }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2012, 20:56
Ответы с готовыми решениями:

Последовательное выполнение действий через Button
Доброго времени суток. Не знаю как описать вопрос. На форме есть кнопка, при нажатии на которую и...

Считывание чисел из текстбоксов, и выполнение над ними арифметических действий
Помогите, надо чтобы числа считывались из текстбоксов и с ними выполнялись арифметические действия...

Отображение действий в калькуляторе
калькулятор выполнял более 1 действия за раз и отброжал, так как в данном варианте он выполняет...

последовательное выполнение
как мне сделать так что бы когда вибераю чек боксами программы для установки, после нажимаю на...

Последовательное выполнение кода
Как можно реализовать последовательность выполнения кода Пока 1 часть не завершит выполнение,...

4
Mr.kto
99 / 100 / 18
Регистрация: 18.08.2012
Сообщений: 308
07.12.2012, 21:07 2
PowerMet, пример
0
PowerMet
0 / 0 / 0
Регистрация: 24.10.2012
Сообщений: 33
07.12.2012, 21:20  [ТС] 3
Mr.kto, у меня немного другая концепция программы, не хотелось бы опять ее переделывать. Но, даже если и вносить какие-то изменения, то я не очень понимаю, как сведения с этой страницы мне помогут, так как он не рассчитан на множество действий подряд, как я понял.
0
Mr.kto
99 / 100 / 18
Регистрация: 18.08.2012
Сообщений: 308
07.12.2012, 21:47 4
PowerMet,calc.zip как то так)
0
PowerMet
0 / 0 / 0
Регистрация: 24.10.2012
Сообщений: 33
07.12.2012, 22:11  [ТС] 5
Mr.kto, к сожалению, я не обладаю такими познаниями в данном языке, что бы понять этот код, тут очень много непонятных для меня вещей, хоть и с комментариями.
Вот если бы ты дал алгоритм, было бы замечательно)
0
07.12.2012, 22:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2012, 22:11

Не последовательное выполнение команд в C#
Итак, есть довольно крупный проект, который мне нужно довести до ума. Создал класс для методов...

Последовательное выполнение нескольких Assert
Всем привет. Прошу подсказать, как внутри тестовой функции реализовать последовательное выполнение...

В калькуляторе сделать так, чтобы 4 последних результата любых действий сохранялись и выводились на экран
В калькуляторе нужно сделать так, чтобы 4 последних результата любых действий сохранялись и...


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

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

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