Инженерный калькулятор windows form

Инженерный калькулятор windows form

Одна из задач, задаваемых студентам по программированию, это создание калькулятора. Раскрою вам небольшой секрет: немало практических, курсовых и лабораторных работ на C++, C# и Java можно и не делать самостоятельно – есть готовые решения в сети. Однако, я был несколько удивлен, что для такого распространенного задания, как визуальный калькулятор на C++ нет такого готового решения. Ну что ж, нет, так нет, давайте напишем его сами.

Итак, как в большинстве проектов, все начинается с создания приложения Windows Forms, а уже в нем – с редактирования формы. У нас получилась вот такая:


Проект для VS2015

В чем будем считать и хранить числа? Я выбрал тип double – точности его нам вполне хватит; это все же студенческая работа, а не для точных инженерных расчетов. Дальше определимся с тем, сколько чисел и операций будем хранить в памяти. Предположим, штук двадцать: тогда надо создать два массива – один для чисел, а другой для операций между ними.

Почему мы воспользовались указателями, а не просто создали глобальные переменные за пределами windows forms? Дело в том, что, использование глобальных переменных – это плохой тон при программировании, и очень часто преподаватели против данной практики студентов.

В нашей программе будут три основных метода: vvod — принимает цифру (нажатую кнопку) в качестве аргумента и добавляет её к числу. ravno — нажатие на кнопку равно — все считает, ravno2 — это нажатие на кнопку знака. Факториал, деление единицы на число и корень квадратные — там реализуются методы сразу при нажатии все обрабатывается.

Добавим также флаг для памяти:

И еще систему флагов:

Вот, например, как у нас будет выглядеть метод vvod():

Здесь мы проверяем, какая клавиша в нашем калькуляторе была нажата перед этим – цифра, арифметическая операция или знак равно. Далее получаем из текстбокса значение, конвертируем предыдущее из массива, конкатенируем строки, потом обратно в double и обновляем значение массива. Также в этом методе мы проверяем длину числа – мы поставили ограничение на 10 знаков.

Обработка кнопки равно – то есть метод вычисления – также не представляет сложности. Пользуясь оператором ветвления switch перебираем все варианты.

Также реализуем собственный класс для обработки ошибок. Зачем это надо? Дело в том, что мы оперируем с числами типа double, а они не выбрасывают некоторые стандартные исключения, например – деление на ноль. Также мы предусмотрим обработку переполнения и вычисления квадратного корня из отрицательного числа. На вход конструкторов этого класса будем принимать пару чисел. Выводятся ошибки при:

  1. взятии корня четной степени из отрицательного числа
  2. логарифмировании отрицательного числа и нуля
  3. делении на нуль.
  4. переполнении (калькулятор все же не бесконечный)

Также не забудем и обработку клавиши запятой. Для этого проверяем, есть ли она уже во введённом числе:

Вот такие основные моменты надо знать для написания данной программы. Ну а если вы не можете самостоятельно написать визуальный калькулятор на C++, то обратитесь ко мне. Актуальную цену за архив с готовой программой и исходниками с подробными комментариями в настоящий моент 500 рублей. Это будет проект в Visual Studio C++ 2010 — он откроется в любой другой версии студии не ниже 2010. Также есть проект для Visual Studio 2015.

Мой калькулятор реализует все основные функции: сложение, вычитание, деление, умножение, факториал, возведение в степень, извлечение квадратного корня, вычисление 1/x, функции памяти (занести в память, вывести содержимое памяти, очистить память).

Добавились новые функции в калькуляторе. А именно:

  • Извлечение корня четной и нечетной степени из числа
  • Вычисление логарифма по любому основанию
  • Вычисление экспоненты

Если вам требуется реализация других функций, то это делается за отдельную плату. Пишите на почту up777up@yandex.ru, стучитесь vk.com/idup7, @upreadru или по другим контактам.


Автор этого материала — я — Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML — то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

статьи IT, си плюс плюс, visual studio, калькулятор

Калькулятор

Реализовать на базе Windows Forms программу “Калькулятор”, в которой должны быть реализованы следующие функции (и соответствующие им кнопки):
Ввод цифр 1, 2, 3, 4, 5, 6, 7, 8, 9, 0. Ввод разделительной точки.
Стирание последней введенной цифры.
Стирание всех цифр.
Арифметические операции +, -, /, *.
Операции с памятью (записать текущее число в память, вывести текущее число из памяти, очистить память).

Читайте также:  Драйверы рутокен для windows exe

Обработку ошибок в программе реализовать с помощью блока try catch.
помогите доработать код(а именно как реализовать операции с памятью и обработку ошибок?)

Калькулятор
Нужно написать программу обычного калькулятора в C#.

Калькулятор
Добрый день, скажите пожалуйста, как можно сделать в калькуляторе подсчёт выражений, например.

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

Калькулятор
Вот моя реализация калькулятора , может кому понадобиться using System; using.

Вложения

SimpleCalc.zip (59.1 Кб, 121 просмотров)

три кнопки: MS (запись в память), MR (чтение из памяти), MC (очищение)

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

калькулятор
в C# плохо пишу, но мне надо написать калькулятор. есть несколько вопросов. знаю, что это самая.

Калькулятор
Доброго времени суток, делаю калькулятор програмиста но столкнулся с проблемой как мне добавлять.

А-ля калькулятор
Спасайте, программисты! Как сделать так, чтобы в калькуляторе при получении результата, с ним.

Калькулятор
Ребят, помогите, плиз. Нужно написать калькулятор типа стандартного в Windows, предусмотреть.

Инженерный калькулятор — реализации

В общем такой вопрос, начав делать я немного поспешил и реализовал стандартные функции калькулятора (+, -, /, *, +/-) с помощью DataTable.Compute, в общем считало оно мне выражение в строке и все было прекрасно, пока не дошел до корня.

И тут вопрос :
Есть ли , какая то замена (фильтры) sqrt и тригонометрических функций через Replace в строке?
Если да, то что?
Если нет, я так понимаю нужно парсить и грубо говоря делать синтаксический разбор выражения?

Я находил , про
NCalc, но честно говоря, я в ней не понял ничего.

Инженерный калькулятор
Всем привет. Задумка такова: калькулятор,в форме есть ВСЕГО однин текст бокс и нужно что бы по.

Инженерный калькулятор: вычисление значения функций
Здравствуйте, у меня есть элемент кода но я не знаю как к нему добавить различные.

Добавить поддержку 16й системы счисления в инженерный калькулятор
Ребята. Помогите пожалуйста. Остался заключительный этап программы, который я уже не в силах.

Инженерный калькулятор
Привет. Подскажите как сделать переключатель форм в калькуляторе по типу Win на разные.

Лучше, конечно, подключить ScriptControl к проекту и обойтись без динамиков.

Еще несколько замечаний по коду. У тебя очень много повторяющегося кода и очень много такого, что можно было бы сделать в дизайнере и не мучиться. Например, для размещения кнопок можно было создать контейнеры, лучше всего — TableLayoutPanel. Создай в таком контейнере нужное количество строк и столбцов, установи для них размеры, добавь в контейнер одну кнопку, установи для нее Dock=Fill, чтобы она заполнила ячейку. После этого скопируй кнопку и вставь нужное количество раз, каждая следующая кнопка будет заполнять следующую ячейку. Установи текст для каждой кнопки, потом выдели контейнер и в нем установи размер и прочие параметры шрифта, все это отразится на всех кнопках. Теперь, если тебе надо сделать все кнопки этой панели недоступными — достаточно установить свойство Enabled для всего контейнера, а не перечислять все кнопки.
Дальше обработка кликов. Выдели одну кнопку в дизайнере, после чего, удерживая Shift, выдели все остальные кнопки панели. Перейди в окне свойств на вкладку событий, найди событие Click и впиши имя обработчика, который будет срабатывать для всех выделенных кнопок, например NumButton_Click. Далее, в редакторе кода в обработчике кликов напиши следующее

После этого у тебя все кнопки будут работать как надо, то есть добавлять в текстовое поле текст, написанный на кнопке. Если надо вставлять другой текст, то используй свойство Tag, значение его устанавливай в дизайнере, а в обработчике клика. ну я думаю понятно.

Добавлено через 3 минуты
Кстати, когда несколько кнопок выделено, можно и другие свойства редактировать. Например, найди свойство FlatAppearance, раскрой его и присвой нужное значение свойству MouseOverBackColor и у тебя отпадет необходимость обрабатывать наведение и удаление мышки на кнопки.

Калькулятор

Калькулятор. Точка в числе
Делаю калькулятор на c++, как добавить возможность ставить точку(запятую) в числе? Пробовал так.

Калькулятор математических функций на C++
Нужно написать програму в Windows Forms Aplication, которая должна рисовать введенную пользователе.

Читайте также:  Rdp client windows downloads

Калькулятор комплексных чисел
оч срочно нужна помощь кто может помочь по информатике с программой визуал студио 2010.

калькулятор sqrt pow функции
private: System::Void btn1_Click(System::Object^ sender, System::EventArgs^ e) < if.

Везёт вам, все ошибки на русском.

Тип char нужно присваивать значение в одинарных кавычках, а не в двойных! В том числе в switch.
Из-за этого ошибок столько много.

И научитесь читать, что вам пишут в ошибках.
Например:

Стр 407. Требуется точка с запятой.

Что не понятно? Даже если дело окажется не в точке с запятой, уже повод обратить внимание на стр 407.

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

Калькулятор. Ввод символов в textbox
Всем привет. Нужна помощь, почему-то не работает. Пишу калькулятор. Есть TextBox — «TextMain».

Калькулятор, разбирающий математические выражения
калькулятор неограниченного числа аргументов, т.е. в resultbox можно ввести — «2+3+4-5»!подскажите.

Калькулятор. Ошибка при вводе
Подскажите пожалуйста, при вводе значений выскакивает ошибка, в чем тут дело? private.

Калькулятор. Взять текст с кнопок с цифрами
Здравствуйте решил попробовать написать калькулятор. Не спец в этом деле. Ради практики) Вот.

Калькулятор Windows Forms на языке C#

Реализация калькулятора Windows Forms на языке C#

Содержимое разработки

Калькулятор Windows Forms на языке C#

Простой калькулятор Windows Forms на C#

Наш калькулятор основан на взаимодействии двух чисел, поэтому математические операции будут следующие:

Возведение первого числа в степень второго

Взятие корня первого числа степени второго числа.

Итак, после того, как с графическим оформлением закончено, приступаем к самому коду.

Для всех вышеописанных операций мы создадим отдельные функции. Функции – это, так сказать, подпрограммы в самой программе, выполняющие отдельные задачи. Они помогают сократить и облегчить код.

public static double sum ( double a , double b )

Для начала мы объявляем программе, что создаем функцию (пишем public static ), затем определяем тип функции( double – числовой тип повышенной точности с плавающей запятой, лучший вариант), после даём имя функции( sum ) и в скобках записываем то, что, так сказать, получает функция от программы( double a и double b – первое и второе числа, которые мы запишем в первые два TextBox’a ). Выражение return возвращает в функцию результат сложения a и b . То есть наша функция получает два числа от пользователя, который введет их в форме и, при помощи return’a , в неё же заносится результат вычисления.

public static double razn ( double a , double b )

public static double umnog ( double a , double b )

public static double del ( double a , double b )

Функция возведения в степень

public static double step ( double a , double b )

return Math . Pow ( a , b );

Функция извлечения корня

public static double koren ( double a , double b )

return Math . Pow ( a, 1/b );

Функции созданы, сталось лишь привязать их к кнопкам в форме. Дважды щёлкаем мышью в форме на первую кнопку. Нас переносит в часть кода, которая отвечает за событие, которое произойдет, когда пользователь кликнет на данную кнопку. В теле этого события мы пишем:

private void button1_Click(object sender, EventArgs e)

textBox3.Text = Convert.ToString(sum(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text)));

Разбор кода начнём, как ни странно, с конца. Мы помним, что при объявлении функции мы писали вот такую часть кода: sum(double a, double b) . То есть функция может получить только значения типа double . Также мы помним, что эти значения мы получаем от пользователя, который, в свою очередь, вводит их в первый и второй TextBox’ы. Однако проблема в том, что значения из TextBox’ов воспринимаются программой как строки, то есть типом string . Поэтому их надо конвертировать в нужный нам double , что мы и делаем: sum(Convert.ToDouble(textBox1.Text),Convert.ToDouble(textBox2.Text))

private void button2_Click(object sender, EventArgs e)

textBox3.Text = Convert.ToString(razn(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text)));

private void button3_Click(object sender, EventArgs e)

textBox3.Text = Convert.ToString(umnog(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text)));

private void button4_Click(object sender, EventArgs e)

textBox3.Text = Convert.ToString(del(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text)));

private void button5_Click(object sender, EventArgs e)

textBox3.Text = Convert.ToString(step(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text)));

private void button6_Click(object sender, EventArgs e)

textBox3.Text = Convert.ToString(koren(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text)));

Здесь у нас 19 кнопок Button , 1 Textbox и ещё 1 пустой Label

Создаём форму. Увеличим ширину TextBox’a , используя MultiLine :

Также в Свойствах мы увеличили размер шрифта в TextBox’e и Label’e до 12 пт.

Теперь делаем так, чтобы при нажатии на цифровые кнопки, в TextBox’e появлялась соответствующая цифра.

Для этого дважды кликаем на кнопке “0” и в открывшемся коде пишем

private void button17_Click(object sender, EventArgs e)

textBox1.Text = textBox1.Text + 0;

private void button13_Click(object sender, EventArgs e)

textBox1.Text = textBox1.Text + 1;

private void button14_Click(object sender, EventArgs e)

Читайте также:  Активатор windows gpt диска

textBox1.Text = textBox1.Text + 2;

private void button15_Click(object sender, EventArgs e)

textBox1.Text = textBox1.Text + 3;

private void button9_Click(object sender, EventArgs e)

textBox1.Text = textBox1.Text + 4;

private void button10_Click(object sender, EventArgs e)

textBox1.Text = textBox1.Text + 5;

private void button11_Click(object sender, EventArgs e)

textBox1.Text = textBox1.Text + 6;

private void button5_Click(object sender, EventArgs e)

textBox1.Text = textBox1.Text + 7;

private void button6_Click(object sender, EventArgs e)

textBox1.Text = textBox1.Text + 8;

private void button7_Click(object sender, EventArgs e)

textBox1.Text = textBox1.Text + 9;

private void button18_Click(object sender, EventArgs e)

bool znak = true;

Кнопки нажимаются, в TextBox’e отображаются нажатые цифры. Теперь надо научить программу производить с ними какие-либо операции. Как видно из формы, наш калькулятор сможет производить стандартные математические операции: сложение, вычитание, умножение и деление. Для начала мы создадим в самом начале программы несколько переменных, которые нам для этого понадобятся:

Первым двум переменным будут присваиваться значения, набранные пользователем в калькуляторе. В последствии с ними будут производиться нужные математические операции. Тип float – это тип с плавающей точкой, позволяющий работать с десятичными дробями, что нам, безусловно, нужно при наличии кнопки “.” .

Благодаря второй переменной мы будем давать программе указания, какую именно операцию производить с переменными, описанными выше. Здесь нам не нужна дробь, поэтому обойдёмся целочисленным типом int .

Последняя переменная znak нам понадобится для того, чтобы менять знаки у введённых чисел. Тип bool может иметь два значения – ture и false . Мы представим, что если znak имеет значение true в программе, то это означает, что у числа знак + , если false – число отрицательное и перед собой имеет знак . Изначально в калькуляторе вбиваются положительные числа, поэтому мы сразу присвоили переменной значение true .

Далее мы дважды нажимаем на кнопку “+” , обозначающую сложение, на форме и пишем следующий код:

В строке 3 мы присваиваем первой переменной a то, что будет написано в TextBox’e (а именно число, которое введёт пользователь перед тем, как нажать кнопку “+” ).

Затем TextBox очищается, число, введённое пользователем, в нём пропадает (но остаётся в переменной a )

Переменной count присваивается число 1, которая потом укажет программе, что именно операцию сложения надо будет произвести с числами.

Затем в Label записывается число из переменной a (то самое, которое изначально ввёл пользователь) и знак плюса. Выглядеть в форме это будет так, как описано ниже.

Пользователь вводит какое-либо число:

Разница лишь в значении переменной count и в том, какой знак добавляется в Label’e .

Далее нам понадобится создать функцию, которая будет применять нужные нам математические операции к числам. Назовём её calculate . Но перед этим мы кликнем дважды на кнопку “=” на форме и в коде к ней мы запишем:

То есть, при нажатии пользователем на кнопку “=” , как раз выполнится наша функция подсчёта calculate , и, заодно, очистится Label , так как результат мы в будущем коде выведем в TextBox .

Теперь-таки создаём нашу функцию calculate и пишем следующий код:

Здесь мы используем конструкцию switch-case .

Switch – это оператор управления. Он может включать в себя несколько case’ов . Case – метки, от значения которых зависит, какие операции будут происходить.

Строка switch(count) означает, что именно от значения count будет зависеть, какое действие будет происходить в коде switch’a .

Итак, если count=1 (в коде case 1: ), то произойдёт следующее:

После того, как пользователь нажал “+” , он, естественно, должен ввести второе слагаемое, что он и делает по стандартному сценарию, а затем нажать кнопку “=” (и в ней, как мы помним, как раз выполнится наша функция).

Как только кнопка “=” будет нажата, программа сложит число из переменной a с тем вторым слагаемым, которое записал пользователь в TextBox , и запишет результат в переменную b (строка 6 кода функции). В строке 7 программа выведет в TextBox результат сложения – переменную b .

Оператор break (строка 8) завершает исполнение кода switch при выполнении кода метки case 1 , так как больше нам в нём делать нечего.

Точно так же строится алгоритм при case 2 , case 3 и case 4 с той разницей, что в них происходит не сложение, а вычитание, умножение и деление соответственно.

Оператор default срабатывает, если вдруг что-то пойдёт не по плану и count примет какое-либо иное значение, не описанное в switch . Тогда срабатывает лишь оператор break .

Львиная доля программы готова. Нам надо лишь написать код для трёх оставшихся нетронутыми до этого время кнопок.

Дважды жмём в форме на кнопку “С” . Она будет очищать все записи из TextBox’a и Label’a .

Оцените статью