Написать калькулятор (+;-) - C (СИ)
Формулировка задачи:
Реализовать программу-калькулятор с возможностью выполнения арифметических действий (+, -), унарный и бинарный вариант. У пользователя запрашивается вы-ражение, например, "-123,5 + 4 - 456+56", программа должна решить выражение. Для разбора входной строки использовать функцию strok.
Решение задачи: «Написать калькулятор (+;-)»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <locale.h> double calc(const char* s){ char* p, c; double n, sum = strtod(s, &p); if(s == p) return 0.0; for(s = p; *s; s = p){ while(*s && isspace(*s)) ++s; if(! *s) break; c = *s++; n = strtod(s, &p); if(s == p) break; switch(c){ case '+': sum += n; break; case '-': sum -= n; break; default: return 0.0; } } return sum; } int main(void){ char s[128]; setlocale(LC_ALL, "Russia"); fgets(s, sizeof(s), stdin); printf("answer: %lg\n", calc(s)); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с функциями ввода-вывода, строками и числами с плавающей точкой.
- Определяем функцию
calc
, которая принимает строку с математическим выражением и возвращает результат вычисления. Внутри функции инициализируем переменныеn
,sum
иp
со значением первого числа в выражении. - Если строка пустая, возвращаем 0.0.
- В цикле while считываем символы из строки до тех пор, пока не встретим пробел или число.
- Если встретили пробел, пропускаем его и переходим к следующему числу.
- Если достигли конца строки, выходим из цикла.
- Если встретили операцию сложения или вычитания, выполняем соответствующее действие с результатом.
- Возвращаем результат вычисления в функции
main
. - В функции
main
считываем строку с выражением с помощьюfgets
. - Вызываем функцию
calc
с переданной строкой и выводим результат на экран. - Программа завершается, если возвращаемое значение функции
calc
равно 0.0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д