首页 > 其他分享 >超算第二次考核任务

超算第二次考核任务

时间:2022-11-11 19:48:10浏览次数:61  
标签:ch sta int void sign char 考核 超算 第二次

后缀表达式

/*
	第一版中缀表达式便后缀表达式 
*/
#include<iostream>
#include<bits/stdc++.h>
#include<string.h> 
#define MAX 1001
using namespace std;
enum fuhao{
	
};
typedef class _stack
{
	private:
		char *express,*sign; //express存数字,sign存字符;
		int exp_top = -1; //表示栈顶 
		int sign_top = -1;//表示栈顶 
	public:	 
		void setin_length(int x);// 输入栈的大小; 
		void setin_sta(char *string);//用于输入栈中的每一个元素 
		void setout();//用于输出栈内元素; 
		void transform();//转移; 
} sta;
void sta::setin_length(int x)
{
	express=(char *)calloc(x+1,sizeof(char));
	sign=(char *)calloc(x+1,sizeof(char));
}
void sta::setin_sta(char * str)
{
	char ch;int i=0;
	while(1){
		ch=*(str + i);
		if(ch >= '0' && ch <='9') express[++exp_top] = ch;
		else if(ch >='(' && ch <='/') {
			if(ch == '('){
				sign[++sign_top] = ch;
			}
			else if(ch == ')') {
				while(sign[sign_top] != '('){
					char temp;
					temp=sign[sign_top];
					sign[sign_top] = 0;
					sign_top--;
					express[++exp_top]=temp;
				}
				sign[sign_top] =0;
				sign_top--;
			}	
			else {
				if(sign_top == -1) {
					sign[++sign_top] = ch;
				}
				else {
					char temp;
					temp=sign[sign_top];
					if(((temp == '+'|| temp =='-' ) && (ch == '*' || ch == '/')) || (temp == '(') ) {
						sign[++sign_top] = ch;
					}
					else if((temp=='+'||temp=='-')&&(ch=='+'||ch=='-')||(temp=='*'||temp=='/')&&(ch=='*'||ch=='/')){
						char temp;
						temp = sign[sign_top];
						sign[sign_top] = ch;
						express[++exp_top] = temp;
					}
					else {
						transform();
						sign[++sign_top] = ch;
					}
				}
			}
		}
		else {
			transform();
			break;
		}
		i++;
	}
}
void sta::setout()
{
	int i;
	for(i=0;i<=exp_top;i++){
		cout<<express[i];
	}
	cout<<endl;
}
void sta::transform(){
	char ch;
	while(sign_top > -1){
		ch=sign[sign_top];
		sign_top--;
		express[++exp_top]=ch;
	}
} 
int main()
{
	sta kit;
	char express[MAX];
	int len;
	cout<<"Please set down the size of your stack to prevent the stack flowed out:"<<endl;
	cin>>len;
	kit.setin_length(len);
	cout<<"Please set down your expression:"<<endl;
	scanf("%s",express);
	cout<<"Your Express is transformed to :"<<endl;
	kit.setin_sta(express);
	kit.setout();
}

标签:ch,sta,int,void,sign,char,考核,超算,第二次
From: https://www.cnblogs.com/zzxs-blog/p/16881540.html

相关文章

  • 第二次合作实验
    一、题目1:我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:①能够自动生成四则运算练习题②可以定制题目数量③用户可以选择运算符......
  • 罚钱太多,项目经理要起义,如何摆平项目管理考核这个大难题?
    文/王不留(微信公众号:程序员生存指南) 01 新版项目管理考核办法从2020年2月份发布,到7月1号正式实施,有近半年的时间。期间项目管理办公室(以下简称:项目办)做了多次提醒和宣贯......
  • abaqus和ansys在云超算平台上的使用,看看哪个更适合你?
    接下来将简单展示abaqus和ansys在北鲲云超算平台的提交作业过程,更详细的步骤可以在首页联系我们。备注电子发烧友还可以获得更多福利哦abaqus使用教程1在控制台选择图形......
  • 第二次Blog总结
    前言本次Blog是对6-9周所做的PTA以及期中考试进行多方面总结,四边形、五边形以及期中考试。对知识点,题量,难度等方面进行分析。首先是第四次大作业,考察了正则表达式、四......
  • 第二次博客
    第二次博客一、前言本次博客包含三次作业,分别是第四次作业,第五次作业和期中考试。前两次作业考核核的是与对象的构造及其方法的运用,每次的题目数量不超过三题,但包含的考......
  • # PTA第二次总结
    PTA第二次总结目录PTA第二次总结1.前言:2.设计与分析:第四次作业7-2点线形系列4-凸四边形的计算第五次作业7-1and7-2点线形系列5-凸五边形的计算期中测试7-3点线面问......
  • 第二次博客
    PTA第二次博客一、前言 本次博客包含三次作业,分别是第四次作业,第五次作业和期中考试。前两次作业考核核的是与对象的构造及其方法的运用,每次的题目数量不超过三题,但包含......
  • 第二次博客
    第二次博客目录第二次博客前言设计与分析题目集4——7-1sdut-String-2识蛟龙号载人深潜,立科技报国志(II)(正则表达式)①题目及分析②分析③代码题目集4——7-2点线形系列4-......
  • 第二次博客总结
                                                         ......
  • 第二次博客总结
     前言经历过一段时间的java学习并完成了三次大作业之后,在此分享我的一些感悟和心得。1.pta第四次作业为四边形的一些算法设计,在第第三次作业三角形上的进阶,难度较高,其......