С для профессиональных программистов



         

Прикладная часть TSR-программы. - часть 9


window_puts(1, "\n ");

window_cleol(1);

switch(*in)

 

case '+':

a = pop();

b = pop();

answer = a+b;

push(a+b);

break;

case '-':

a = pop();

b = pop();

answer = b-a;

push(b-a);

break;

case '* ':

a = pop();

b = pop();

answer = b*a;

push(b*a);

break;

case '/ ':

a = pop();

b = pop();

if(a==0)

window_puts(0, "divide by 0\n");

break;

answer = b/a;

push(b/a);

break;

default:

push(atoi(in));

continue;

itoa(answer, out, 10);

window_puts(1, out);

   while(*in);

deactivate(1);

/* Поместить число в стек.

Возвратить 1 в случае успеха и 0 если стек переполнен

*/

push(i)

int i;

if(p>bos) return 0;

*p = i;

p++;

return 1;

/* Извлечь верхний элемент из стека. Возвратить 0 если стек пуст.

*/

pop()

p--;

if(p<tos)

p++;

return 0;

return *p;

/**********************************************************/

/*                                            Всплывающая записная книжка                                                */

#define MAX_NOTE 10

#define BKSP 8

char notes[MAX_NOTE] [80];

void notepad()

static first = 1;

register int i, j;

union inkey

char ch[2];

int i;

 c;

char ch;

/* инициализировать массив записей если это необходимо */

if(first)

for(i=0; i<MAX_NOTE; i++)

*notes[i] = '\0 ';

first = !first;

window(0);

/* вывести существующие записи */

for(i=0; i<MAX_NOTE; i++)

if(*notes[i]) window_puts(0, notes[i]);

window_putchar(0, '\n ');

i = 0;

window_xy(0, 0, 0);

for(;;)

c.i = bioskey(0);  /* обработать нажатие клавиши */

if(tolower(c.ch[1])==59)  /* F1 для выхода */

deactivate(0);

break;

/* если обычная клавиша */

if(isprint(c.ch[0]) || c.ch[0]==BKSP)

window_cleol(0);

notes[i][0] = c.ch[0];

j = 1;

window_putchar(0, notes[i][0]);

do

 

ch = window_getche(0);

if(ch == BKSP)

if( j>0 )

j--;

window_bksp(0);

else

notes[i][j] = ch;

j++;

 while(notes[i][j-1]! = '\r ');

notes[i][j-1] = '\0 ';

i++;

window_putchar(0, '\n ');

else  /* если специальная клавиша */

switch(c.ch[1])

case 72: /* стрелка вверх */

if(i>0)

i--;

window_upline(0);

break;

case 80: /* стрелка вниз */

if(i<MAX_NOTE-1)

i++;

window_downline(0);

break;




Содержание  Назад  Вперед