нь, потім множення, ділення, додавання і віднімання. Якщо вираз містить дужки, то в першу чергу обчислюється підвираз під вкладених дужках самого нижнього рівня, а потім по зростанню рівня.
Алгоритм роботи програми
Дана програма дозволяє обчислювати вирази, містять чисельні значення і деякі функції. Отже, в алгоритмі потрібно здійснювати перевірку на невірно введені символи і помилково натиснуті клавіші. Так само необхідно врахувати кількість відкритих і закритих дужок. Алгоритм програми наступний: включається функція get_token (), в якій кожен символ, що вводиться перевіряється чи є він виходом, висновком відповіді, оператором "+", "-", "*", "/", "^", Цифрою або буквою, в кожному з цих випадків відбувається подальший рекурсивний розбір введеного вирази.
token_value get_token ()
{
char ch;
do
{
if ((ch = getch ()) == ESC) return curr_tok = END;
} while (ch == '');
switch (ch)
{
case ';':
putch (ch);
ps = ' x0';
return curr_tok = PRINT;
case ' r':
ps = ' x0';
gotoxy (1, wherey () +1);
return curr_tok = NEXT;
case '*': case '/': case '+': case '-':
case '(': case ')': case '=': case '^':
dupl_oper_verify (ps, ch),
return curr_tok = ch;
case '0 ': case '1': case '2 ': case '3': case '4 ':
case '5 ': case '6': case '7 ': case '8': case '9 ': case '.':
ps = ' x0';
ungetch (ch);
get_number ();
return curr_tok = NUMBER;
default:
ps = ' x0';
if (isalpha (ch))
{
ungetch (ch);
get_name ();
return curr_tok = NAME;
}
error ("Invalid symbol");
return curr_tok = PRINT;
}
}
Ця функція є визначальною при розпізнаванні введеного вирази, тобто основоположною при обчисленні відповіді.
Технічні дані для використання
Для запуску даної програми необхідна наявність персонального комп'ютера IBM PC/XT з операційною системою MS-DOS. Українізатор для ознайомлення з Допомогою. Обсяг оперативної пам'яті 640 Кбайт. Для запуску програми необхідно зробити поточним каталог з програмою Cal_kur.exe і викликати її на виконання.
Опис основних функцій
Функція get_token () - функція синтаксичного розбору введеного вирази.
Функція get_number () - функція введення числа.
Функція get_name () - функція введення імені постійної або функції.
Функція expr () - функція обчислення повного вираження.
Функція term () - функція обчислення доданка.
Функція prim () - функція обчислення первинної частини вираження.
Функція function_value () - функція обчислення значення функції.
Висновок повідомлення про помилку
Функція error () - функція виведення повідомлення про помилку.
Функція term_sym () - функція перевірка на термінальний символ.
Функція void back_space () - функція виправлення помилки введення клавішею BACKSPACE. p> Функція dupl_oper_verify () - функція перевірка дублювання знаку операції.
Функція menu () - функція організовує меню.
Список використаної літератури
1. Л.І. Шолмов. Мова Сі. 1988р. p> 2. Г. Шилдт. C для професійних програмістів. 1989р. p> 3. Б.В. Керниган, Д.М. Річі. Мова Сі. 1995р. p align=right> Додаток
# include
# include
# include
# include
# include
# include
# include
# define PI 3.14159265359
# define E 2.718281828459
# define ENTER 13
# define ESC 27
# define BACKSPACE ' b'
// Масив, відповідний термінальним символам
enum token_value
NAME, NUMBER, END,
PRINT = ';', NEXT = ' r',
PLUS = '+', MINUS = '-', MUL = '*', DIV = '/', POWER = '^',
ASSIGN = '=', LP = '(', RP = ')';
token_value curr_tok;
// Чисельна величина
double number_value;
// Рядок для зберігання введеного імені функції
char * func_name;
// Номер функції в словнику функцій
int function_number;
// Словник функцій
char funcs [43] = "sin cos ln asin acos e pi "; p>//
int sch_ch = 0;
// Попередня операція
char ps = ' x0...