网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 设计资源 > 单片机 > 正文
课程设计
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: Admin 发布时间: 09/07/22

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int PrintError = 0;
/*全局变量,0代表正常,1代表表达式出错*/

/*char类型链表式堆栈,用来存放运算符号,以及用在中缀表达式转换等时候*/
typedef struct Node *PtrToNode;
typedef PtrToNode Stack;
int IsEmpty(Stack S);
void MakeEmpty(Stack S);
void Push(char X,Stack S);
char Top(Stack S);
void Pop(Stack S);

typedef struct Node{
 char Element;
 PtrToNode Next;
};

/*float类型链表式堆栈,用来存放操作数*/
typedef struct FNode *Ptr_Fn;
typedef Ptr_Fn FStack;
int FisEmpty(FStack S);
void FPush(float X,FStack S);
float FTop(FStack S);
void FPop(FStack S);
 
typedef struct FNode{
 float Element;
 Ptr_Fn Next;
};

void ConvertToPost(FILE *In, Stack Whereat,FILE *Temp);
void Reverse(Stack Rev);
void Calculate(FILE *Change, Stack Whereat,FILE *Temp);

/******主函数******/
int main()
{
 FILE *InputFile, *OutputFile,*Temp;    /*初始化变量*/
 Stack Whereat; 
 char sample;
 InputFile = fopen("Input.txt","r");     /*打开文件*/
 OutputFile = fopen("Output.txt","w");

 Whereat = malloc(sizeof(struct Node));    /*给 Whereat分配空间*/
 Whereat->Next = NULL;
 if (!InputFile || !OutputFile) {                   /*错误处理*/
  printf("intput or output file(s) do not exist.\n");
  return(1);
 }
 sample = getc(InputFile);          
 while ( sample != EOF){
  Temp = fopen("Temp.txt","w+");     /*生成Temp文件*/
  ungetc(sample,InputFile);      /* put back sample字符*/
  ConvertToPost(InputFile,Whereat,Temp);   /*中缀变后缀*/
  if (PrintError){                             /*错误处理*/
   fprintf(OutputFile,"Error in infix notation."); 
   fscanf(InputFile,"\n",&sample);
   PrintError = 0;
  }
  else if (IsEmpty(Whereat) == 1){              /*跳过在input文件中的空格*/
  }
  else if (IsEmpty(Whereat) != 1){
   Reverse(Whereat);
   if (Top(Whereat) == 'B'){       /*错误处理,*/
                                           /*A表示操作数B表示运算符*/
    PrintError = 1;         /*后缀表达式第一个元素应是操作数而不是运算符号*/
   }
  fclose(Temp);
  Temp = fopen("Temp.txt","r+");     
  Calculate(OutputFile, Whereat,Temp);   /*计算结果*/
  }
  fclose(Temp);         
  MakeEmpty(Whereat);      /* 清空Whereat用来处理下一行*/
  putc('\n',OutputFile);      /* 在输出文件中换行*/
  sample = getc(InputFile);     
 }                                       

  • 上一篇资讯: ep51编程器
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 电话:013574892963 QQ:3710167 邮箱:Educs@163.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 Www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号