⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 szys.c

📁 利用堆栈实现有理数的四则运算
💻 C
📖 第 1 页 / 共 3 页
字号:
   if(isPoint_included(q)){           /*include point */
    while(swap->link->info!='.'){swap=swap->link;i++;}
    swap=q;
    while(swap->link->info!='.'&&--i!=0){
     j=i;
     m=(NumberType)swap->link->info-'0';
     while(j--!=0) m=m*10;
     t1=t1+m;
     swap=swap->link;
    }
    if(i==0) {t1=t1+(NumberType)swap->link->info-'0'; swap=swap->link->link;}
    i=1;
    while(swap->link->info!='_'){
     j=i;
     m=(NumberType)swap->link->info-'0';
     while(j--!=0) m=m*1/10;
     t1=t1+m;
     swap=swap->link;
     i++;
    }
   }
   else if(!isPoint_included(q)){     /*doesn't include point*/
          while(swap->link->info!='_') {swap=swap->link; i++;}
          swap=q;
          while(swap->link->info!='_'&&--i!=0) {
      j=i;
      m=(NumberType)swap->link->info-'0';
      while(j--!=0) m=m*10;
             t1=t1+m;
            swap=swap->link;
    }
    if(i==0) {t1=t1+(NumberType)swap->link->info-'0';swap=swap->link;}
   }

      swap=temp; i=0;   /* calculate t2 */
   if(isPoint_included(temp)){   /*include point */
    while(swap->link->info!='.'){swap=swap->link;i++;}
    swap=temp;
    while(swap->link->info!='.'&&--i!=0){
     j=i;
     m=(NumberType)swap->link->info-'0';
     while(j--!=0) m=m*10;
     t2=t2+m;
     swap=swap->link;
    }
    if(i==0) {t2=t2+(NumberType)swap->link->info-'0'; swap=swap->link->link;}
    i=1;
    while(swap->link->info!='_'){
     j=i;
     m=(NumberType)swap->link->info-'0';
     while(j--!=0) m=m*1/10;
     t2=t2+m;
     swap=swap->link;
     i++;
    }
   }
   else if(!isPoint_included(temp)){
    while(swap->link->info!='_'){swap=swap->link;i++;}
          swap=temp;
          while(swap->link->info!='_'&&--i!=0) {
      j=i;
      m=(NumberType)swap->link->info-'0';
      while(j--!=0) m=m*10;
             t2=t2+m;
            swap=swap->link;
    }
    if(i==0) {t2=t2+(NumberType)swap->link->info-'0';swap=swap->link;}
   }
   if(p->link->info=='+') t=t1+t2;
   else if(p->link->info=='-') t=t1-t2;
   else if(p->link->info=='*') t=t1*t2;
   else if(p->link->info=='/') t=t2/t1;
      /*///// Deal with the left //////////////////*/
     q=temp;
     p=p->link;
  }
     /***********************************************************************************/
  /***********************************************************************************/
     else if(!isOperator(p->info)&&!isOperator(p->link->link->info)&&Calculator_underline(p->link)==1){
   if(q==pllist->base){                     /* find q */
         while(q!=p){
         if(q->info=='_') temp=q;
         q=q->link;
      }
         q=temp;
   }
   temp1=temp=pllist->base;
      while(temp!=q){                         /* find temp */
         if(temp->info=='_') temp1=temp;
         temp=temp->link;
   }
      temp=temp1; temp1=pllist->base;
      /*////////// Calculate function /////////////////////*/
      swap=q; i=0;       /* calculate t1 */
   if(isPoint_included(q)){           /*include point */
    while(swap->link->info!='.'){swap=swap->link;i++;}
    swap=q;
    while(swap->link->info!='.'&&--i!=0){
     j=i;
     m=(NumberType)swap->link->info-'0';
     while(j--!=0) m=m*10;
     t1=t1+m;
     swap=swap->link;
    }
    if(i==0) {t1=t1+(NumberType)swap->link->info-'0'; swap=swap->link->link;}
    i=1;
    while(swap->link->info!='_'){
     j=i;
     m=(NumberType)swap->link->info-'0';
     while(j--!=0) m=m*1/10;
     t1=t1+m;
     swap=swap->link;
     i++;
    }
   }
   else if(!isPoint_included(q)){     /*doesn't include point*/
          while(swap->link->info!='_') {swap=swap->link; i++;}
          swap=q;
          while(swap->link->info!='_'&&--i!=0) {
      j=i;
      m=(NumberType)swap->link->info-'0';
      while(j--!=0) m=m*10;
             t1=t1+m;
            swap=swap->link;
    }
    if(i==0) {t1=t1+(NumberType)swap->link->info-'0';swap=swap->link;}
   }
      swap=temp; i=0;   /* calculate t2 */
   if(isPoint_included(temp)){   /*include point */
    while(swap->link->info!='.'){swap=swap->link;i++;}
    swap=temp;
    while(swap->link->info!='.'&&--i!=0){
     j=i;
     m=(NumberType)swap->link->info-'0';
     while(j--!=0) m=m*10;
     t2=t2+m;
     swap=swap->link;
    }
    if(i==0) {t2=t2+(NumberType)swap->link->info-'0'; swap=swap->link->link;}
    i=1;
    while(swap->link->info!='_'){
     j=i;
     m=(NumberType)swap->link->info-'0';
     while(j--!=0) m=m*1/10;
     t2=t2+m;
     swap=swap->link;
     i++;
    }
   }
   else if(!isPoint_included(temp)){
    while(swap->link->info!='_'){swap=swap->link;i++;}
          swap=temp;
          while(swap->link->info!='_'&&--i!=0) {
      j=i;
      m=(NumberType)swap->link->info-'0';
      while(j--!=0) m=m*10;
             t2=t2+m;
            swap=swap->link;
    }
    if(i==0) {t2=t2+(NumberType)swap->link->info-'0';swap=swap->link;}
   }
   if(p->link->info=='+') t=t1+t2;
   else if(p->link->info=='-') t=t1-t2;
   else if(p->link->info=='*') t=t1*t2;
   else if(p->link->info=='/') t=t2/t1;
      /*///// Deal with the left //////////////////*/
     q=temp;
     temp=p=p->link;
     /***note*** Dealt withe the second part*/
     while(!isOperator(p->link->info)) p=p->link;
     swap=temp; t1=0;i=0;   /* calculate t1 */
   if(isPoint_included(temp)){   /*include point */
    while(swap->link->info!='.'){swap=swap->link;i++;}
    swap=temp;
    while(swap->link->info!='.'&&--i!=0){
     j=i;
     m=(NumberType)swap->link->info-'0';
     while(j--!=0) m=m*10;
     t1=t1+m;
     swap=swap->link;
    }
    if(i==0) {t1=t1+(NumberType)swap->link->info-'0'; swap=swap->link->link;}
    i=1;
    while(swap->link->info!='_'){
     j=i;
     m=(NumberType)swap->link->info-'0';
     while(j--!=0) m=m*1/10;
     t1=t1+m;
     swap=swap->link;
     i++;
    }
   }
   else if(!isPoint_included(temp)){
    while(swap->link->info!='_'){swap=swap->link;i++;}
   swap=temp;
          while(swap->link->info!='_'&&--i!=0) {
      j=i;
      m=(NumberType)swap->link->info-'0';
      while(j--!=0) m=m*10;
        t1=t1+m;
            swap=swap->link;
    }
    if(i==0) {t1=t1+(NumberType)swap->link->info-'0';swap=swap->link;}
   }
   if(p->link->info=='+') t=t+t1;
   else if(p->link->info=='-') t=t-t1;
   else if(p->link->info=='*') t=t*t1;
   else if(p->link->info=='/') t=t/t1;
      /*///// Deal with the left //////////////////*/
     p=p->link;
  }
  /************************************************************/
  /************************************************************/
  else if(isOperator(p->info)&&isOperator(p->link->info)){
   temp=temp1=pllist->base; t2=0;i=0;   /*find temp */
   while(temp!=q){
    if(temp->info=='_') temp1=temp;
    temp=temp->link;
   }
   temp=temp1;
   swap=temp;
   if(isPoint_included(temp)){
    while(swap->link->info!='.') {swap=swap->link;i++;}
    swap=temp;
    while(swap->link->info!='.'&&--i!=0){
     j=i;
     m=(NumberType)swap->link->info-'0';
     while(j--!=0) m=m*10;
     t2=t2+m;
     swap=swap->link;
    }
    if(i==0) {t2=t2+(NumberType)swap->link->info-'0'; swap=swap->link->link;}
    i=1;
    while(swap->link->info!='_'){
     j=i;
     m=(NumberType)swap->link->info-'0';
     while(j--!=0) m=m*1/10;
     t2=t2+m;
     swap=swap->link;
     i++;
    }
   }
   else if(!isPoint_included(temp)){
    while(swap->link->info!='_'){swap=swap->link;i++;}
    swap=temp;
    while(swap->link->info!='_'&&--i!=0) {
      j=i;
      m=(NumberType)swap->link->info-'0';
      while(j--!=0) m=m*10;
             t2=t2+m;
            swap=swap->link;
    }
    if(i==0||i==-1) {t2=t2+(NumberType)swap->link->info-'0';swap=swap->link;}
   }
   /*calculate t*/
   if(p->link->info=='+') t=t+t2;
   else if(p->link->info=='-') t=t-t2;
   else if(p->link->info=='*') t=t*t2;
   else if(p->link->info=='/') t=t2/t;
   /* dealt with the left */
   temp=swap=pllist->base;
   while(swap!=q){
    if(swap->info=='_') temp=swap;
    swap=swap->link;
   }
   q=temp;
   p=p->link;
  }
  /*****************************************************************/
  /*****************************************************************/
  else if(isOperator(p->info) && !isOperator(p->link->info)&&Calculator_underline(p->link)==1){
   temp=p;
   while(!isOperator(p->link->info)) p=p->link;
   swap=temp;
   t1=t2=0;i=0;
   if(isPoint_included(temp)){
    while(swap->link->info!='.') {swap=swap->link;i++;}
    swap=temp;
    while(swap->link->info!='.'&&--i!=0){
     j=i;
     m=(NumberType)swap->link->info-'0';
     while(j--!=0) m=m*10;
     t1=t1+m;
     swap=swap->link;
    }
    if(i==0||i==-1) {t1=t1+(NumberType)swap->link->info-'0'; swap=swap->link->link;}
    i=1;
    while(swap->link->info!='_'){
     j=i;
     m=(NumberType)swap->link->info-'0';
     while(j--!=0) m=m*1/10;
     t1=t1+m;
     swap=swap->link;
     i++;
    }
   }
   else if(!isPoint_included(temp)){
    while(swap->link->info!='_'){swap=swap->link;i++;}
    swap=temp;
    while(swap->link->info!='_'&&--i!=0) {
      j=i;
      m=(NumberType)swap->link->info-'0';
      while(j--!=0) m=m*10;
             t1=t1+m;
            swap=swap->link;
    }
    if(i==0) {t1=t1+(NumberType)swap->link->info-'0';swap=swap->link;}
   }
    /*calculate t*/
   if(p->link->info=='+') t=t+t1;
   else if(p->link->info=='-') t=t-t1;
   else if(p->link->info=='*') t=t*t1;
   else if(p->link->info=='/') t=t/t1;
   /* dealt with the left */
   temp=swap=pllist->base;
   while(swap!=q){
    if(swap->info=='_') temp=swap;
    swap=swap->link;
   }
   q=temp;
   p=p->link;
  }
  /*******************************************************************/
  /********************************************************************/
  else if(isOperator(p->info)&&!isOperator(p->link->info)&&Calculator_underline(p->link)==2){
   PNode ID;
   temp1=temp=pllist->base;
      while(temp!=q){                         /* find temp */
         if(temp->info=='_') temp1=temp;
         temp=temp->link;
   }
      ID=temp=temp1;
   temp1=q=p;
   while(!isOperator(p->link->info)) p=p->link;
   while(q->link!=p){
    if(q->link->info=='_') temp=q->link;
    q=q->link;
   }
   q=temp;
   temp=temp1;
   swap=q; t1=0;i=0;       /* calculate t1 */
   if(isPoint_included(q)){           /*include point */
    while(swap->link->info!='.'){swap=swap->link;i++;}
    swap=q;
    while(swap->link->info!='.'&&--i!=0){
     j=i;
     m=(NumberType)swap->link->info-'0';
     while(j--!=0) m=m*10;
     t1=t1+m;
     swap=swap->link;
    }
    if(i==0 ||i==-1) {t1=t1+(NumberType)swap->link->info-'0'; swap=swap->link->link;}
    i=1;
    while(swap->link->info!='_'){
     j=i;
     m=(NumberType)swap->link->info-'0';
     while(j--!=0) m=m*1/10;
     t1=t1+m;
     swap=swap->link;
     i++;
    }
   }
   else if(!isPoint_included(q)){     /*doesn't include point*/
          while(swap->link->info!='_') {swap=swap->link; i++;}
          swap=q;
          while(swap->link->info!='_'&&--i!=0) {
      j=i;
      m=(NumberType)swap->link->info-'0';
      while(j--!=0) m=m*10;
             t1=t1+m;
            swap=swap->link;
    }
    if(i==0 || i==-1) {t1=t1+(NumberType)swap->link->info-'0';swap=swap->link;}
   }
      swap=temp; t2=0;i=0;   /* calculate t2 */
   if(isPoint_included(temp)){   /*include point */
    while(swap->link->info!='.'){swap=swap->link;i++;}
    swap=temp;
    while(swap->link->info!='.'&&--i!=0){
     j=i;
     m=(NumberType)swap->link->info-'0';
     while(j--!=0) m=m*10;
     t2=t2+m;
     swap=swap->link;
    }
    if(i==0 ||i==-1) {t2=t2+(NumberType)swap->link->info-'0'; swap=swap->link->link;}
    i=1;
    while(swap->link->info!='_'){
     j=i;
     m=(NumberType)swap->link->info-'0';

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -