Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 24.10.2012
Сообщений: 33

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

07.12.2012, 20:56. Показов 4080. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.12.2012, 20:56
Ответы с готовыми решениями:

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

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

Последовательное выполнение действий
Всем привет! Почему неверен код: $.when($("#comment").keyup().mouseup(), $("#add").click(), $("#del").click()).then(function(){ ...

4
 Аватар для Mr.kto
104 / 105 / 18
Регистрация: 18.08.2012
Сообщений: 308
07.12.2012, 21:07
PowerMet, пример
0
0 / 0 / 0
Регистрация: 24.10.2012
Сообщений: 33
07.12.2012, 21:20  [ТС]
Mr.kto, у меня немного другая концепция программы, не хотелось бы опять ее переделывать. Но, даже если и вносить какие-то изменения, то я не очень понимаю, как сведения с этой страницы мне помогут, так как он не рассчитан на множество действий подряд, как я понял.
0
 Аватар для Mr.kto
104 / 105 / 18
Регистрация: 18.08.2012
Сообщений: 308
07.12.2012, 21:47
PowerMet,calc.zip как то так)
0
0 / 0 / 0
Регистрация: 24.10.2012
Сообщений: 33
07.12.2012, 22:11  [ТС]
Mr.kto, к сожалению, я не обладаю такими познаниями в данном языке, что бы понять этот код, тут очень много непонятных для меня вещей, хоть и с комментариями.
Вот если бы ты дал алгоритм, было бы замечательно)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.12.2012, 22:11
Помогаю со студенческими работами здесь

Выполнение арифметических действий с условием
Помогите,пожалуйста решить. Не умею совсем((( z= a + c - w; если z<=0, то вычислить N = a + (a + b) * f / (a - b) + f; ...

Выполнение арифметических действий с 32-разрядными числами на 286
Доброго времени суток Возникла проблема осуществления задания с лабораторной. Написать программу для арифметический действий с...

Подсчет действий на калькуляторе
Прошу помощи в решении следующей задачи: Имеется калькулятор, который умеет делать только три операции: 1. Прибавить к текущему...

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

Ставлю задержку на выполнение действий в цикле - задержка ставится почему то на выполнение всего скрипта
Здравствуйте! Код элементарный: $s = $_POST; $s = preg_replace('/ {2,}/',' ',$s); for ($i = 0; $i < strlen($s);...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru