Как создать калькулятор c#
В данном уроке мы разработаем с вами калькулятор на C#. Программа будет написана согласно принципам объектно-ориентированного программирования (ООП): будет определен интерфейс для методов, реализующих функционал клавиш математических операций калькулятора, от интерфейса выполним наследование и напишем соответствующий класс и методы. Калькулятор, помимо базовых операций сложения, вычитания, умножения и деления, будет предоставлять возможность выполнять операции: извлечения квадратного корня, извлечения корня произвольной степени, возведения в квадрат, возведения в произвольную степень, вычисления факториала, а также работу с регистром памяти (MRC).
336 показов
2.3K открытий
Создание интерфейса.
Создадим в Visual Studio проект на Visual C# Windows Forms. Добавим на форму элемент GroupBox, в который поместим Label. В свойстве Dock, элемента Label, необходимо указать Right, чтобы Label был привязан к правому краю. Связка данных элементов управления будет реализовывать дисплей калькулятора.
Калькулятор также содержит кнопки. Всего их 28 штук.
Программирование калькулятора на C#Реализация интерфейса класса.
Поскольку наш калькулятор будет написан в рамках парадигмы ООП (объектно-ориентированного программирования), то начнем кодирование с описания структуры интерфейса для класса, реализующего математические операции программы.
Добавим в проект класс InterfaceCalc.cs и определим в созданном файле интерфейс InterfaceCalc.
//интерфейс
public interface InterfaceCalc
//а — первый аргумент, b — второй
void Put_A(double a); //сохранить а
void Clear_A();
double Multiplication(double b);
double Division(double b);
double Sum(double b);
double Subtraction(double b); //вычитание
double SqrtX(double b);
double DegreeY(double b);
double Sqrt();
double Square();
double Factorial();
double MemoryShow(); //показать содержимое регистра памяти
void Memory_Clear(); //стереть содержимое регистра памяти
//* / + — к регистру памяти
void M_Multiplication(double b);
void M_Division(double b);
void M_Sum(double b);
void M_Subtraction(double b); //вычитание
>
Для выполнения математических операций понадобится два операнда: a и b (например, a + b). Операнд a придется хранить в памяти калькулятора, пока пользователь будет вводить второй аргумент операции. Для сохранения числа a объявим прототип метода void Put_A(double a), для очистки — void Clear_A(). Для умножения, деления, сложения и вычитания чисел a и b соответственно понадобятся методы: double Multiplication(double b), double Division(double b), double Sum(double b), double Subtraction(double b). Вычисление корня степени b из a: double SqrtX(double b). Возведение числа a в степень b: double DegreeY(double b). Вычисление квадратного корня: double Sqrt(). Возведение числа a в квадрат: double Square(). Вычисление факториала a!: double Factorial(). Теперь объявления методов для работы с регистром памяти (MRC) калькулятора. Показать содержимое памяти и очистить его: double MemoryShow(), void Memory_Clear(). M×, M÷, M+ и M- к регистру соответственно: void M_Multiplication(double b), void M_Division(double b), void M_Sum(double b), void M_Subtraction(double b).
Создание класса, реализующего интерфейс InterfaceCalc
Теперь добавим в калькулятор класс, который будет реализовывать написанный ранее интерфейс. Для этого в проекте создадим класс Calc : InterfaceCalc. Как вы видите, здесь используется наследование (оператор «двоеточие»). В данном классе напишем реализацию всех методов, требуемых спецификацией нашего интерфейса.
public class Calc : InterfaceCalc
private double a = 0;
private double memory = 0;
public void Put_A(double a)
this.a = a;
>
public void Clear_A()
a = 0;
>
public double Multiplication(double b)
return a * b;
>
public double Division(double b)
return a / b;
>
public double Sum(double b)
return a + b;
>
public double Subtraction(double b) //вычитание
return a — b;
>
public double SqrtX(double b)
return Math.Pow(a, 1 / b);
>
public double DegreeY(double b)
return Math.Pow(a, b);
>
public double Sqrt()
return Math.Sqrt(a);
>
public double Square()
return Math.Pow(a, 2.0);
>
public double Factorial()
double f = 1;
for (int i = 1; i
f *= (double)i;
return f;
>
//показать содержимое регистра мамяти
public double MemoryShow()
return memory;
>
//стереть содержимое регистра мамяти
public void Memory_Clear()
memory = 0.0;
>
//* / + — к регистру памяти
public void M_Multiplication(double b)
memory *= b;
>
public void M_Division(double b)
memory /= b;
>
public void M_Sum(double b)
memory += b;
>
public void M_Subtraction(double b)
memory -= b;
>
>
Реализация работы калькулятора
Перейдем к написанию кода в классе Form1.
Программа «Простейший калькулятор»
Написать программу, выполняющую над двумя числами арифметическую операцию. Числа и знак вводит пользователь. Программа должна завершаться, когда пользователь вводит символ ‘0’ в качестве знака операции. Предусмотреть сообщения о невозможности деления на ноль и неверном введенном знаке операции.
В языке программирования C существует проблема с вводом данных через функцию scanf(). Когда нажимается Enter, то символ перехода на новую строку сохраняется и присваивается переменной при следующем вызове scanf(). Поэтому от лишнего символа избавляются, не присваивая его никакой переменной (для этого в формате пишется знак *).
#include main() float x,y; char sign='+'; while (sign != '0') printf("Знак: "); scanf("%c%*c", &sign); if (sign == '0') break; > if (sign == '+' || sign == '-' || sign == '*' || sign == '/') printf("x color: #009900;">); scanf("%f%*c", &x); printf("y color: #009900;">); scanf("%f%*c", &y); switch (sign) case '+': printf("%.2f\n", x+y); break; case '-': printf("%.2f\n", x-y); break; case '*': printf("%.2f\n", x*y); break; case '/': if (y != 0) printf("%.2f\n", x/y); else printf("Деление на ноль!\n"); > > else printf("Неверно указан знак операции\n"); > >
Пример выполнения программы:
Знак: 7 Неверно указан знак операции Знак: 3 Неверно указан знак операции Знак: + x=4 y=5 9.00 Знак: / x=0 y=0 Деление на ноль! Знак: - x=-34.4 y=-2 -32.40 Знак: 0
X Скрыть Наверх
Решение задач на языке C
Developing.ru
Люди нужна помощь.
Надо написать помочь написать калькулятор.
Калькулятор должен уметь складывать, вычитать, делить, умножать, а также переводить из одной системы счисления в другую. Я смог написать код отдельно для математических операций и отдельно для перевода из систем счисления. Вроде соеденил все заработало, но преподователю нужно чтобы было кое что иное. Он хочет, как я понимаю, сначала мы вводим например 5+3 потом программа спрашивает в какой системе счисления дать ответ, потом мы соответсвенно выбираем систему и программа выводит результат в выбранной системе счисления. В моем коде преподователю не понравилось то что программа не разбита на маленькие функции, он я так понимаю, просит чтобы там была функция ввода, вывода, перевода из систем счисления, и соответсвенно функция самих математических операций.
Вот мой код:
Мат.операции:
int main (void) < float a, b; char oper; printf ("BBeguTe BbIPA>|
Перевод из систем счисления:
int main (void) < const char basedigits[16] = ; int convertednumber[64]; long int numbertoconvert; int nextdigit, base, index = 0; //получить число и основание. printf ("Number to be converted? "); scanf ("%ld", &numbertoconvert); printf ("Base? "); scanf ("%i", &base); do < convertednumber[index] = numbertoconvert % base; ++index; numbertoconvert = numbertoconvert / base; >while ( numbertoconvert != 0 ); printf("Converted number = "); for (--index; index >= 0; --index ) < nextdigit = convertednumber[index]; printf ("%c", basedigits[nextdigit]); >printf ("\n"); getch(); return 0; >
Очень прошу помочь, если все получится с меня «пиво», как говорится))
Как сделать калькулятор на C
В этой статье простым языком изложена вся необходимая информация для программирования калькулятора на языке C. Применяемая программа используется на лабораторных занятиях студентов инженерных специальностей первого года обучения. Так что любой студент, например изучающий математическое моделирование в биологии, сможет самостоятельно запрограммировать калькулятор. Попробуем сделать калькулятор и мы.
Цель этой программы
Сделать простой калькулятор на языке программирования C с помощью оператора switch .
Понятия, используемые в программе
Типы данных
Тип данных указывает на вид данных, которые может хранить переменная, например целочисленные типы, числа с плавающей запятой, символьные типы данных и т. д.
В этой программе использованы целочисленные и символьные типы данных — int и char соответственно.
int
Переменная int используется для хранения целых чисел.
Синтаксис для int : int variable_name =integer ; .
Например: int a=10; .
char
Самый распространенный тип данных на C. Он занимает в памяти один байт почти во всех компиляторах.
Синтаксис для char : char variable_name=”single character”; .
Например: char b=”x”; .
Операторы switch
Переключатель (оператор switch ) позволяет проверить переменную на соответствие по списку значений. Каждое значение называется случаем ( case ), и переменная, для которой задействуется оператор switch , проверяется для каждого случая внутри switch .
Синтаксис для switch :
switch(expression) case value1:
statement(s);
break;
case value2:
statement(s);
break;
…….
default:
statement(s)
>
Алгоритм для этой программы
Шаг 1: начало.
Шаг 2: объявляется переменная n, a, b, c типа данных int .
Шаг 3: отображается меню для пользователя.
Шаг 4: читается значение n от пользователя.
Шаг 5: при вводе пользователем любого числа от 1 до 5 выполняется следующий шаг согласно случаю, соответствующему введенному числу.
Шаг 6:
a) случай 1. Читаются значения a и b. Высчитывается сумма a и b. Результат отображается с помощью break; .
б) случай 2. Читаются значения a и b. Высчитывается разность a и b. Результат отображается с помощью break; .
в) случай 3. Читаются значения a и b. Высчитывается произведение a и b. Результат отображается с помощью break; .
г) случай 4. Читаются значения a и b. Высчитывается частное от деления а на b. Результат отображается с помощью break; .
д) случай 5. Читаются значения a и b. Высчитывается квадрат а. Результат отображается с помощью break; .
е) default: отображается Invalid .
Шаг 7: конец.
Блок-схема
Что такое « #include »?
Заголовочный файл stdio. h расшифровывается как “standard input output” («стандартный ввод/вывод»). В нем содержится информация, связанная с функциями ввода/вывода.
Что такое « #include »?
#includeconio. h> — это заголовочный файл, используемый на C, в котором находятся встроенные функции, такие как getch() и clrscr() . Расшифровывается он как “console input ouput” («ввод/вывод на консоль»), т. е. он принимает ввод с клавиатуры и отображает его на экране.
Что такое « main »?
Функция main() — это точка входа любой программы на Си. Здесь начинается выполнение программы. При этом контроль выполнения переходит непосредственно в функцию main() . Функция main() есть в каждой программе на C.
Что такое « printf » и « scanf »?
Функция printf() задействуется для отображения вывода, а функция scanf() — для принятия пользовательского ввода. Они часто используются в языке C, в частности в заголовочных файлах в качестве встроенных библиотечных функций.
Что такое « switch » и « case »?
Оператор switch позволяет проверить переменную на соответствие по списку значений. Каждое значение называется случаем ( case ), а переменная, для которой задействуется оператор switch , проверяется для каждого случая case внутри switch .
Что такое оператор « break »?
break — это ключевое слово, которое используется в языке C для вывода управления программой из цикла. Оператор break задействуется внутри циклов или внутри оператора switch , прерывая циклы один за другим. То есть в случае вложенных циклов сначала он прерывает внутренний цикл, а затем переходит к внешним.
А для чего на C нужен « default »?
Операторы switch и case используются только для конкретных значений выполняемых операторов case и для проверяемого выражения внутри switch . Когда выражение в switch не соответствует ни одному случаю case , программа выполняет операторы default .
Что такое « ruturn 0 »?
return 0 в функции main означает, что программа выполнена успешно и определяемая пользователем функция возвращает false . return 1 в функции main означает, что программа не выполнена успешно и есть какая-то ошибка, а определяемая пользователем функция возвращает true .
Программа / исходный код
/*Программа для создания калькулятора
Имя разработчика: Vigneswaran*/
#include
#include
int main()
int a,b,n;
clrscr();
printf("Enter two numbers:");
scanf("%d %d",&a,&b);
printf("Enter your choice:\n 1.Addition\n 2.Subtraction\n 3.multiplication\n")
printf("4.Division\n 5.Square of a number\n");
scanf("%d",&n);
switch(n)
case 1:
printf("The sum of %d and %d is %d ",a,b,a+b);
break;
case 2:
printf("The Subtraction of %d and %d is %d",a,b,a-b);
break;
case 3:
printf("The multiplication of %d and %d is %d",a,b,a*b);
break;
case 4:
printf("The division of %d and %d is %d",a,b,a-b);
break;
case 5:
printf("The Subtraction of %d and %d is %d",a,b,a-b);
break;
default:
printf("Invalid operation");
>
getch();
return 0;
>
Выполненный вывод
Надеемся, что статья была для вас полезной и легкой.
- Перестановка двух чисел на Си
- Для чего нужен указатель в Си?
- Rust или Си: кто Усэйн Болт в мире программирования?
