Введение
В этом проекте мы узнаем, как создать простой калькулятор на языке программирования C. Калькулятор будет способен выполнять базовые арифметические операции, такие как сложение, вычитание, умножение и деление. Мы также реализуем проверки, чтобы убедиться, что ввод пользователя действителен, и обработаем ситуации, когда ввод приводит к неопределенному поведению.
👀 Предварительный просмотр
$./Calculator
32+11
=43.000000
$./Calculator
41-34.9
=6.100000
$./Calculator
10/2
=5.000000
$./Calculator
2*4
=8.000000
$./Calculator
10%3
=1
🎯 Задачи
В этом проекте вы узнаете:
- Как получать ввод пользователя в C с использованием
scanf() - Как проверить формат вводимого арифметического выражения
- Как выполнять арифметические вычисления на основе ввода пользователя
- Как обрабатывать ошибки деления на ноль
- Как реализовать оператор остатка только для целых операндов
🏆 Достижения
После завершения этого проекта вы сможете:
- Разобраться, как получать ввод пользователя в C
- Реализовать различные арифметические операции в C
- Выполнять проверку на ошибки и обрабатывать недействительный ввод
- Компилировать и запускать программы на C с использованием компилятора
gcc
Получить ввод пользователя
Получение ввода пользователя очень простой процесс. Вы можете использовать форматированные функции ввода-вывода языка C printf() и scanf().
Вот код программы, отвечающий за чтение ввода пользователя:
#include<stdio.h>
int main()
{
double number1=0.0; // Определить первый операнд
double number2=0.0; // Определить второй операнд
char operation=0; // operation должен быть '+', '-', '*', '/' или '%'
printf("\nEnter the calculation\n");
scanf("%lf%c%lf",&number1,&operation,&number2);
return 0;
}
Проверка формата и выполнение вычислений
Следующая функциональность, которую необходимо реализовать в нашей программе, - это проверка формата вводимого арифметического выражения.
Самая базовая проверка - это определение, является ли операция, указанная в вводимом выражении, допустимой. Допустимыми операциями являются +, -, *, /, %, поэтому нам нужно проверить, принадлежит ли вводимая операция к этому набору.
此外,важно отметить, что когда операция / или %, второй операнд не может быть 0. Если это 0, операция недопустима.
Логика для этих проверок может быть реализована с использованием if-операторов. Альтернативой может служить оператор switch, который представляет собой более удобный и компактный способ обработки этой ситуации. Он легче понять и менее избыточный по сравнению с рядом if-операторов.
switch(operation)
{
case '+':
printf("=%lf\n",number1+number2);
break;
case '-':
printf("=%lf\n",number1-number2);
break;
case '*':
printf("=%lf\n",number1*number2);
break;
case '/':
if(number2==0)
printf("\n\n\aDivision by zero error!\n");
else
printf("=%lf\n",number1/number2);
break;
case '%':
if((long)number2==0)
printf("\n\n\aDivision by zero error!\n");
else
printf("=%ld\n",(long)number1%(long)number2);
break;
default:
printf("\n\n\aInvalid operation!\n");
break;
}
Оператор остатка % не имеет смысла для типов float или double, так как они могут представлять точные результаты. Оператор % имеет смысл только при применении к целочисленным типам. Поэтому перед применением этого оператора операнды нужно преобразовать в целые числа. Когда оператор %, второй операнд преобразуется в целое число. Поэтому недостаточно только проверить, равен ли второй операнд 0, но и то, равно ли значение number2 0 при преобразовании в long. Например, 0.5 не равно 0, но при преобразовании в целое число становится 0.
Компиляция и запуск файлов
После написания файла программы вы можете скомпилировать исходный файл, чтобы получить исполняемый файл. Команда для компиляции выглядит так:
gcc -o Calculator Calculator.c
Примечание: Формат команды
gccвыше -gcc -o output_filename source_filename.c. Если не указано "output_filename", по умолчанию имя выходного файла -a.out.
В этом случае вы заметите новый файл с именем Calculator в директории. Это исполняемый файл, который мы получили после компиляции и связывания исходного файла. Чтобы запустить его, используйте команду ./Calculator.
./Calculator
$./Calculator
32+11
=43.000000
$./Calculator
41-34.9
=6.100000
$./Calculator
10/2
=5.000000
$./Calculator
2*4
=8.000000
$./Calculator
10%3
=1
Резюме
В этом проекте мы использовали язык C для создания простого калькулятора. В настоящее время функциональность калькулятора ограничена и он может поддерживать только базовые вычисления с двумя операндами. Студенты могут продолжить расширять этот калькулятор, например, добавив поддержку для нескольких операндов или введя механизм приоритета операторов.



