?? diff.c
字號:
#include "global.h"
extern nodeptr zero, one, mi_one;
nodeptr diff(nodeptr fpt, char v[])
{
nodeptr p, pl, pr, new_node();
switch (fpt->node_id) {
case 'b':
switch (fpt->node_data.bi_term.oprt)
{
case '+':
p=new_node();
p->node_id='b';
p->node_data.bi_term.oprt='+';
p->node_data.bi_term.left=diff(fpt->node_data.bi_term.left, v);
p->node_data.bi_term.right=diff(fpt->node_data.bi_term.right, v);
break;
case '-':
p=new_node();
p->node_id='b';
p->node_data.bi_term.oprt='-';
p->node_data.bi_term.left=diff(fpt->node_data.bi_term.left, v);
p->node_data.bi_term.right=diff(fpt->node_data.bi_term.right, v);
break;
case '*':
p=new_node();
p->node_id='b';
p->node_data.bi_term.oprt='+';
pl=new_node();
p->node_data.bi_term.left=pl;
pl->node_id='b';
pl->node_data.bi_term.oprt='*';
pl->node_data.bi_term.left=diff(fpt->node_data.bi_term.left, v);
pl->node_data.bi_term.right=fpt->node_data.bi_term.right;
pr=new_node();
p->node_data.bi_term.right=pr;
pr->node_id='b';
pr->node_data.bi_term.oprt='*';
pr->node_data.bi_term.left=fpt->node_data.bi_term.left;
pr->node_data.bi_term.right=diff(fpt->node_data.bi_term.right, v);
break;
};
break;
case 'u':
switch (fpt->node_data.un_term.oprt)
{
case 's':
p=new_node();
p->node_id='b';
p->node_data.bi_term.oprt='*';
pl=new_node();
p->node_data.bi_term.left=pl;
pl->node_id='u';
pl->node_data.un_term.oprt='y';
pl->node_data.un_term.next=fpt->node_data.un_term.next;
p->node_data.bi_term.right=diff(fpt->node_data.un_term.next, v);
break;
case 'y':
p=new_node();
p->node_id='b';
p->node_data.bi_term.oprt='*';
pl=mi_one;
p->node_data.bi_term.left=pl;
/* pl=new_node();
p->node_data.bi_term.left=pl;
pl->node_id='c';
sprintf(pl->node_data.cn_term.c_name,"-1");
pl->node_data.cn_term.c_value=-1; */
pr=new_node();
p->node_data.bi_term.right=pr;
pr->node_id='b';
pr->node_data.bi_term.oprt='*';
pl=new_node();
pr->node_data.bi_term.left=pl;
pl->node_id='u';
pl->node_data.un_term.oprt='s';
pl->node_data.un_term.next=fpt->node_data.un_term.next;
pr->node_data.bi_term.right=diff(fpt->node_data.un_term.next, v);
break;
};
break;
case 'c':
p=zero;
break;
case 'v':
if (strcmp(fpt->node_data.va_term.v_name, v)==0) p=one;
else
p=zero;
break;
};
return(p);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -