Написание простейшего калькулятора на языке C#
Всем привет! У меня есть цель — научиться программировать. В качестве первого языка я решил выбрать C#, хотя также иногда занимаюсь изучением языка C++. И я решил, что можно выкладывать свой код и свои программы здесь, на Хабре, так как тут есть много специалистов, которые смогут дать совет как улучшить код, подскажут интересные варианты решения различных проблем и так далее. В общем, если вы будете видеть в коде какие то недочеты, то я всегда за то, чтобы вы меня поправили в комментариях. А теперь приступим к написанию кода на языке C#.

Я буду писать код в среде Visual Studio 2022. Для меня данная среда максимально удобная и понятная. Чтобы написать консольное приложение в этой среде, необходимо создать проект. Так выглядит необходимый для нас тип проекта:

После создания проекта перед нами появляется окно с таким кодом:
using System; using System.Collections.Generic; using System.Linq; using System.Security.Policy; using System.Text; using System.Threading.Tasks; namespace calculator < internal class Program < static void Main(string[] args) < >> >
Писать весь наш код мы будем в пределах фигурных скобок данного метода:
static void Main(string[] args)
Для начала необходимо создать переменные, отвечающие за числа, которые будет вводить пользователь, переменную, отвечающую за результат, который получит пользователь, и переменную, отвечающую за знак действия.
Для вводимых чисел и результата создаем переменные типа float.
float one, two, result;
Также создаем переменную типа char, которая будет отвечать за знак действия.
char sign;
Итого получаем такой код:
static void Main(string[] args)
Теперь давайте выведем надпись в консоль, чтобы пользователь знал, что это за программа. Используем команду Console.WriteLine(). Также давайте напишем здесь то, что должен сделать пользователь.
Console.WriteLine("Добро пожаловать в калькулятор. Вам нелбходимо ввести первое число, затем знак действия(+,-,*,/), которое хотите совершить и второе число.");
Теперь выводим надписи о вводе первого числа, знака, а также второго числа. И также используем команду Console.ReadLine(), чтобы получить от пользователя значения всех переменных. Но необходимо конвертировать значение, так как выше написанная команда принимает по умолчанию только строки.
Console.Write("Введите первое число: "); one = Convert.ToSingle(Console.ReadLine()); Console.Write("Введите знак действия : "); sign = Convert.ToChar(Console.ReadLine()); Console.Write("Введите Второе число: "); two = Convert.ToSingle(Console.ReadLine());
Так выглядит весь наш написанный код на данный момент:
static void Main(string[] args) < float one, two, result; char sign; Console.WriteLine("Добро пожаловать в калькулятор. Вам нелбходимо ввести первое число, затем знак действия(+,-,*,/), которое хотите совершить и второе число."); Console.Write("Введите первое число: "); one = Convert.ToSingle(Console.ReadLine()); Console.Write("Введите знак действия : "); sign = Convert.ToChar(Console.ReadLine()); Console.Write("Введите Второе число: "); two = Convert.ToSingle(Console.ReadLine()); >
А теперь необходимо написать несколько условий. Во-первых, для выбора действий — сложение, вычитание, деление и умножение. А во-вторых, если мы выбрали деление, то необходимо прописать условие, которое проверяет делитель на то, равен он нулю или же нет. Так как условия действий примерно похожие, то я выложу сразу 5 условий(5 условие — если пользователь ввел недопустимый знак).
if (sign == '+') < result = one + two; Console.WriteLine("Сумма ваших чисел равна " + result); Console.WriteLine("Для выхода нажмите любую клавишу. "); Console.ReadKey(); >else if (sign == '-') < result = one - two; Console.WriteLine("Разность ваших чисел равна " + result); Console.WriteLine("Для выхода нажмите любую клавишу. "); Console.ReadKey(); >else if (sign == '*') < result = one * two; Console.WriteLine("Произведение ваших чисел равно " + result); Console.WriteLine("Для выхода нажмите любую клавишу. "); Console.ReadKey(); >else if (sign == '/') < result = one / two; Console.WriteLine("Частное ваших чисел равно " + result); Console.WriteLine("Для выхода нажмите любую клавишу. "); Console.ReadKey(); >else
Как вы могли заметить, я также использовал команду Console.ReadKey(), она использовалась для того, чтобы наша программа не закрывалась сразу после завершения вычислений. В этих условиях мы проверяли на равенство какому либо знаку переменную sign, имеющую тип char. А теперь давайте напишем условие, которое проверяет второе число на равенство нулю, его мы будем писать в той части кода, где описаны действия при выборе деления.
if (two == 0) < Console.WriteLine("Ошибка. Делитель не может быть равным нулю."); Console.WriteLine("Для выхода нажмите любую клавишу. "); Console.ReadKey(); >else < result = one / two; Console.WriteLine("Частное ваших чисел равно " + result); Console.WriteLine("Для выхода нажмите любую клавишу. "); Console.ReadKey(); >
Как вы можете заметить, ничего сложного тут нет. Итого имеем такой код при выборе деления:
else if (sign == '/') < if (two == 0) < Console.WriteLine("Ошибка. Делитель не может быть равным нулю."); Console.WriteLine("Для выхода нажмите любую клавишу. "); Console.ReadKey(); >else < result = one / two; Console.WriteLine("Частное ваших чисел равна " + result); Console.WriteLine("Для выхода нажмите любую клавишу. "); Console.ReadKey(); >
Ну и вот весь код, который мы написали.
using System; using System.Collections.Generic; using System.Linq; using System.Security.Policy; using System.Text; using System.Threading.Tasks; namespace calculator < internal class Program < static void Main(string[] args) < float one, two, result; char sign; Console.WriteLine("Добро пожаловать в калькулятор. Вам нелбходимо ввести первое число, затем знак действия(+,-,*,/), которое хотите совершить и второе число."); Console.Write("Введите первое число: "); one = Convert.ToSingle(Console.ReadLine()); Console.Write("Введите знак действия : "); sign = Convert.ToChar(Console.ReadLine()); Console.Write("Введите Второе число: "); two = Convert.ToSingle(Console.ReadLine()); if (sign == '+') < result = one + two; Console.WriteLine("Сумма ваших чисел равна " + result); Console.WriteLine("Для выхода нажмите любую клавишу. "); Console.ReadKey(); >else if (sign == '-') < result = one - two; Console.WriteLine("Разность ваших чисел равна " + result); Console.WriteLine("Для выхода нажмите любую клавишу. "); Console.ReadKey(); >else if (sign == '*') < result = one * two; Console.WriteLine("Произведение ваших чисел равно " + result); Console.WriteLine("Для выхода нажмите любую клавишу. "); Console.ReadKey(); >else if (sign == '/') < if (two == 0) < Console.WriteLine("Ошибка. Делитель не может быть равным нулю."); Console.WriteLine("Для выхода нажмите любую клавишу. "); Console.ReadKey(); >else < result = one / two; Console.WriteLine("Частное ваших чисел равна " + result); Console.WriteLine("Для выхода нажмите любую клавишу. "); Console.ReadKey(); >> else < Console.WriteLine("Ошибка. Вы ввели неверный знак."); Console.WriteLine("Для выхода нажмите любую клавишу. "); Console.ReadKey(); >> > >
А теперь давайте посмотрим, как работает наша программа.

Вводим числа и действие и видим, что все работает.

И давайте еще попробуем умножить дробное число на целое.

И опять видим, что все работает.
Вот такая получилась у нас программа. А на этом у меня всё. Если есть какие то вопросы, или же если вы хотите что то поправить, пишите в комментариях, я всегда на них с радостью отвечу!
- C#
- Простой калькулятор
- программирование
Исходный код калькулятора на языке Visual Basic
Всем привет, сегодня в материале мы с Вами напишем маленькую программку на языке программирования Visual Basic, которая складывает, вычитает, умножает и делит целые числа. Это достаточно простая программа, но для обучения начинающих программистов самое оно.
Ну, давайте начнем, конечно же, у Вас должна уже быть установлена среда программирования Microsoft Visual Basic v 6.0. Запускаем среду, перед Вами окно выбора проекта, выбираем «standard.exe» и нажимаем открыть. Сейчас перед вами форма нашей с Вами программы и давайте ее наполнять.
Для начала сделайте вот что, справа в окне свойств найдите такую строку «StartUpPosition» и выберите там 1-centerowner, это для того чтобы наша программа запускалась по центру нашего монитора.
Далее давайте наполним внешний интерфейс, для этого уже слева в окне выбора объектов выберите «CommandButton», добавьте его на форму, и сделайте это 4 раза, т.е. добавьте 4 кнопки и расположите их слева направо, итого должно получиться так: Command1, Command2, Command3, Command4. Теперь давайте мы зададим им название, делается это снова в окне свойств (справа) строка Caption. Для этого щелкните по кнопке Command1 (она выделится) и в строке Caption окна свойств сотрите Command1 и напишите «сложение», потом щелкните (выделите) Command2 и напишите умножение, далее Command3 будет у нас деление, а Command4 вычитание.
С кнопками мы с Вами разобрались, теперь добавим 3 текстовых поля, делается также в окне добавления объекта (слева), выберите TextBox и добавьте 3 штуки, а расположите их так: Text1 и Text2 сверху, а Text3 чуть ниже. Теперь в окне свойств (которое справа) изменим, значение поля Text, т.е. как и раньше с кнопками, выбирайте по очереди каждое текстовое поле и в окне свойств меняйте значение строки text на, да просто сотрите, что там есть и ничего не пишите. Значение этого свойства отображается по умолчанию в текстовых полях.
Пример исходного кода программы калькулятор
А теперь осталось добавить сам код программы, для этого нажмите 2 раза в пустом месте формы и у Вас появится что-то вроде этого:
Private Sub Form_Load() End Sub
Вы просто сотрите это и вставьте следующее:
Private Sub Command1_Click() Dim a As Long Dim b As Long a = Text1.Text b = Text2.Text Text3.Text = a + b End Sub Private Sub Command2_Click() Dim a As Long Dim b As Long a = Text1.Text b = Text2.Text Text3.Text = a * b End Sub Private Sub Command3_Click() Dim a As Long Dim b As Long a = Text1.Text b = Text2.Text Text3.Text = a / b End Sub Private Sub Command4_Click() Dim a As Long Dim b As Long a = Text1.Text b = Text2.Text Text3.Text = a - b End Sub
Вот такая незамысловатая программа, теперь ее нужно проверить, в верхнем меню найдите такую кнопочку (иконку) как «start» и нажмите, если Вы все сделали правильно, то у Вас запустится программа, где будет 3 текстовых поля и 4 кнопки. Вы можете в верхние 2 поля вставить, например: в правое 50, а в левое 10 и можете проверить действие программы, нажимая на все кнопки, только учтите, она выполняет все действия только с целыми числами.
Когда мы все проверили ее можно скомпилировать в exe файл, для этого нажмите меню «файл» «Компилировать проект», потом просто укажите путь, куда его сохранить. После компиляции запустите нашу с Вами программу, и можете пробовать посчитать некоторые числа. В этой программе мы не прописывали никаких условий, поэтому строго соблюдайте, чтобы в текстовых полях были только целые числа. Вот мы и написали первую программу на Visual Basic в среде программирования Microsoft Visual Basic v 6.0. В следующих уроках мы уже будем писать программы немного посложней.
Как сделать калькулятор в visual studio code
Регистрация: 05.06.2012
Сообщений: 12
Калькулятор в Microsoft Visual Studio
Необходимо создать калькулятор в виде консольного приложения в Microsoft Visual Studio. Простой калькулятор, который выполняет действия : +,-,/,*,%, sqrt я сделал, но загвоздка в том, что у меня он работает с двумя числами. Как сделать калькулятор, который бы мог посчитать функцию :»5+5-3*8-4. и так далее» (т.е. неограниченное количество действий).
Вот мои наработки:
#include #include class calculator >a>>zn1>>b>>zn2; if (zn2=='=') < if (zn1=='+') if (zn1=='-') if (zn1=='*') if (zn1=='/') if (zn1=='%') std::cout else < if (zn1=='+') if (zn1=='-') if (zn1=='*') if (zn1=='/') if (zn1=='%') circle(); >; >; void circle(void) < float a=z1; if (zn1=='+') if (zn1=='-') if (zn1=='*') if (zn1=='/') if (zn1=='%') circle(); >; void plus(void) < z1=a+b; >; void minus(void) < z1=a-b; >; void mult(void) < z1=a*b; >; void div(void) < z1=a/b; >; void pers(void) < z1=a*(b/100); >; >; void main(void)
Сделал с помощью классов.
C++ Простейший калькулятор
Привет всем! Решил я изучать С++, но тут проблема. Написал я калькулятор, а он не работает. В результате действий пишет «0». Вот код:
#define _CRT_SECURE_NO_WARNINGS #include #include #include float a, b, c; char d; int p; int main() < while (p != 2) < printf("1 = calculator \n 2 - exit \n"); scanf("%d", &p); switch (p) < case 1: < float c; printf("First number "); scanf("%d", &a); printf("Action with numbers "); scanf("%s", &d); printf("Second number "); scanf("%d", &b); if (d == '+') c = a + b; if (d == '-') c = a - b; if (d == '*') c = a * b; if (d == '/') c = a / b; system("cls"); >case 2: < break; >> printf("Result = %2.f \n", c); > >
Отслеживать
51.3k 87 87 золотых знаков 267 267 серебряных знаков 505 505 бронзовых знаков
задан 8 окт 2016 в 3:30
Чебупелька Чебупелька
19 1 1 золотой знак 1 1 серебряный знак 2 2 бронзовых знака
1. Отформатируйте код. 2. Ошибка в несоответствии строки формата функции scanf и типов переменных.
8 окт 2016 в 3:44
Решили изучить C++, но пишите при этом на C. Пары плюсовых инклюдов для этого маловато.
8 окт 2016 в 5:43
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Вы читаете d как строку, в то время как это char . Для него надо использовать спецификатор %c . Далее, не %d для float , а %f . И почему бы вам не пользоваться double — чай, на дворе не 80-е годы. 🙂
Ну и я бы вместо лесенки if ‘ов использовал switch .
case 2: break
Вас выбросит из switch , но не из while . Опять же, при входе в while значение p не определено.
Я бы делал что-то такое — правда, тут защиты от дурака (неверного ввода) никакой, но это уже самостоятельно 🙂
#define _CRT_SECURE_NO_WARNINGS #include int main() < double a, b, c; char d; int p = 1; while (p != 2) < printf("1 - calculator\n2 - exit\n"); scanf("%d", &p); if (p != 1) break; printf("Write expression (without spaces): "); scanf("%lf%c%lf", &a,&d,&b); while(getchar() != '\n'); switch(d) < case '+': c = a + b; break; case '-': c = a - b; break; case '*': c = a * b; break; case '/': c = a / b; break; default: printf("Wrong action\n"); continue; >printf("Result = %lf\n", c); > >
Просто вводите типа 2*2 и все.
Отслеживать
ответ дан 8 окт 2016 в 5:21
219k 15 15 золотых знаков 119 119 серебряных знаков 230 230 бронзовых знаков
Поскольку вы учите С++, вместо printf и scanf лучше использовать cout и cin . В них не нужно заботиться о формате принимаемого и выводимого значений, плюс нету такой проблемы, как попадание в буфер ввода не того символа. В вашем случае вместо %d для считывания значений типа float нужно использовать %f , а для считывания символа %c . Во время работы вашего кода после поправки форматирования у меня, например, вместо считывания символа операции считывался знак новой строки, и ввод переходил сразу на второе число. Для избежания этого следовало бы очистить буфер ввода командой fflush(stdin) . Однако все эти вопросы решаются использованием cout и cin .
Далее, у вас дважды объявлена переменная c , одна — глобальная, а вторая — в области видимости case 1: . Внутри case 1: вы присваиваете результат локальной переменной, а команда вывода результата на экран находится вне области видимости этой переменной, и выводит на экран глобальную переменную c , которой ничего присвоено не было, отсюда и постоянный результат 0 .
Вот моя версия кода:
#include using namespace std; float a, b, c; char d; int p; int main() < while (p != 2) < cout > p; switch (p) < case 1: < cout > a; cout > d; cout > b; if (d == '+') c = a + b; if (d == '-') c = a - b; if (d == '*') c = a * b; if (d == '/') c = a / b; > case 2: < break; >> cout )" data-controller="se-share-sheet" data-se-share-sheet-title="Поделиться ссылкой на ответ" data-se-share-sheet-subtitle="" data-se-share-sheet-post-type="answer" data-se-share-sheet-social="facebook twitter " data-se-share-sheet-location="2" data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f3.0%2f" data-se-share-sheet-license-name="CC BY-SA 3.0" data-s-popover-placement="bottom-start">Поделиться )" title="">Улучшить ответ )">изменён 9 окт 2016 в 15:49 ответ дан 9 окт 2016 в 10:53 ShadasviarShadasviar 753 5 серебряных знаков 12 бронзовых знаков