9;;
// Перевірка браку пам'яті
void * Malloc (size_t size);
// Функція синтаксичного розбору виразу
token_value get_token (void);
// Введення числа
void get_number (void);
// Введення імені функції
void get_name (void);
// Обчислення повного вираження
double expr (void);
// Обчислення доданка
double term (void);
// Обчислення первинної частини виразу
double prim (void);
// Обчислення значення функції
double function_value (void);
// Висновок повідомлення про помилку
double error (char *);
// Перевірка на термінальний символ
int term_sym (char);
// Виправлення помилки клавішею BACKSPACE
void back_space (int *); p>// Перевірка дублювання знаку операції
void dupl_oper_verify (char, char);
// Вікно виводу повідомлення
void message ();
// Рамка вікна
void ramka ();
// Вікно введення вираження
void screen_input ();
// Вікно введення відповіді
void screen_output ();
// Інформація
void info ();
// Організація меню
void menu (int n);
// Музика при виході
void sound_exit ();
// Два на два
void dva_x_dva ();
/* =============================== Основна частина ============================ */void main ()
FILE * help, * about; int m = 1, loop = 1, i, pr;
double x;
char s [255], key = -1, * put, * empty_str;
clrscr ();
textbackground (0);
textcolor (15);
while (loop)
clrscr ();
menu (m);
do p> key = Getch ();
if (Key == 72 && m> 1)
m -;
menu (m);
sound (220);
delay (50);
nosound ();
;
if (Key == 80 && m <4)
m + +;
menu (m);
sound (220);
delay (50);
nosound ();
;
while (Key! = 13);
switch (m)
case 1:
clrscr (); if ((help = fopen (put = "d: univer langs bc work Help.txt", "r")) == NULL)
printf ("Imposible open file% s! n ", put);
getch ();
break;
return;
i = 0;
while (! feof (help))
putchar (getc (help));
i + +;
_setcursortype (_NOCURSOR);
getch ();
break;
case 2:
clrscr ();
ramka ();
screen_input ();
screen_output ();
message ();
info ();
dva_x_dva ();
_setcursortype (_NORMALCURSOR),
textcolor (15);
gotoxy (6,4);
func_name = (Char *) Malloc (5);
while (1)
get_token ();
if (Curr_tok == END) break;
if (Curr_tok! = PRINT && curr_tok! = NEXT)
pr = printf ("% f n", expr ()),
if (pr! = 0)
gotoxy (6,4);
printf (""
" "); p> gotoxy (6,4);
free (func_name);
break;
case 3:
clrscr (); if ((about = fopen (put = "d: univer langs bc work Credits.txt", "r")) == NULL)
printf ("Imposible open file% s! n ", put);
getch ();
break;
return;
i = 0;
while (! feof (about))
putchar (getc (about));
i + +;
_setcursortype (_NOCURSOR);
getch ();
break;
case 4:
sound_exit ();
loop = 0; break;
default:
continue;
/* ========================= Перевірка браку пам'яті ================= ======= */
void * Malloc (size_t size)
void * P;
if ((p = malloc (size)) == NULL)
printf (" No memory n ");
exit (1);
return p;
/* ================== Функція синтаксичного розбору виразу ============== */
token_value get_token ()
char ch;
do
if ((Ch = getch ()) == ESC) return curr_tok = END;
while (Ch == '');
switch (ch)
case ';': p> 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'. 'p> ps = ' X0'...