不屑一顾 近义词:逆波兰式的生成程序

来源:百度文库 编辑:神马品牌网 时间:2024/04/20 19:51:59
c 语言编写 能直接运行
c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言

#include <iostream.h>
#include <iomanip.h>

int i,j;
struct thread
{
int id;
int priority;
int alltime;
int startblock;
int blocktime;
int state;//0表示ready; 1表示run; 2表示block;
int readycount;
}thread[5]={{0,9,3,2,6,0,0},{1,38,3,-1,0,0,0},{2,30,6,-1,0,0,0},{3,30,3,-1,0,0,0},{4,0,4,-1,0,0,0}},t;

void run()
{
cout<<thread[i].id<<"** run **"<<setw(5)<<setiosflags(ios::left)<<thread[i].priority;
thread[i].readycount=0;
thread[i].priority-=3;
thread[i].alltime-=1;
thread[i].state=0;
if(thread[i].startblock>0)
thread[i].startblock--;
}

void ready()
{
cout<<thread[i].id<<"**ready**"<<setw(5)<<setiosflags(ios::left)<<thread[i].priority;
thread[i].readycount++;
thread[i].priority++;
thread[i].state=0;
}

void block()
{
cout<<thread[i].id<<"**block**"<<setw(5)<<setiosflags(ios::left)<<thread[i].priority;
thread[i].blocktime--;
thread[i].state=0;
if(thread[i].blocktime==0)
thread[i].startblock--;
}

void main()
{
int threadcount=5;

for(int n=1;n<=50;n++)
{
cout<<"时间片 "<<n;
cout<<endl;

//如果进程结束删除
for(i=0;i<threadcount;i++)
{
if(thread[i].alltime==0)
{
threadcount--;
for(j=i;j<threadcount;j++)
{
thread[j]=thread[j+1];
}
}
}

//进程排序优先级由高至低
for(j=0;j<threadcount-1;j++)
{
for(i=0;i<threadcount-1-j;i++)
{
if((thread[i].priority)<(thread[i+1].priority))
{
t=thread[i];
thread[i]=thread[i+1];
thread[i+1]=t;
}
//如果优先级相等,进程等待时间片数readycount大的排在前
if(thread[i].priority==thread[i+1].priority)
if(thread[i].readycount<thread[i+1].readycount)
{
t=thread[i];
thread[i]=thread[i+1];
thread[i+1]=t;
}
}
}

for(i=0;i<threadcount;i++)
{
if(thread[i].startblock==0)
thread[i].state=2;
else
{
thread[i].state=1;
break;
}
}

for(i=0;i<threadcount;i++)
{
if(thread[i].state==1)
run();
else
if(thread[i].state==0)
ready();
else
block();
}

cout<<endl;

if(threadcount==1)
if(thread[0].alltime==0)
break;
}

}

佩服

#include <iostream.h>
#include <iomanip.h>

int i,j;
struct thread
{
int id;
int priority;
int alltime;
int startblock;
int blocktime;
int state;//0表示ready; 1表示run; 2表示block;
int readycount;
}thread[5]={{0,9,3,2,6,0,0},{1,38,3,-1,0,0,0},{2,30,6,-1,0,0,0},{3,30,3,-1,0,0,0},{4,0,4,-1,0,0,0}},t;

void run()
{
cout<<thread[i].id<<"** run **"<<setw(5)<<setiosflags(ios::left)<<thread[i].priority;
thread[i].readycount=0;
thread[i].priority-=3;
thread[i].alltime-=1;
thread[i].state=0;
if(thread[i].startblock>0)
thread[i].startblock--;
}

void ready()
{
cout<<thread[i].id<<"**ready**"<<setw(5)<<setiosflags(ios::left)<<thread[i].priority;
thread[i].readycount++;
thread[i].priority++;
thread[i].state=0;
}

void block()
{
cout<<thread[i].id<<"**block**"<<setw(5)<<setiosflags(ios::left)<<thread[i].priority;
thread[i].blocktime--;
thread[i].state=0;
if(thread[i].blocktime==0)
thread[i].startblock--;
}

void main()
{
int threadcount=5;

for(int n=1;n<=50;n++)
{
cout<<"时间片 "<<n;
cout<<endl;

//如果进程结束删除
for(i=0;i<threadcount;i++)
{
if(thread[i].alltime==0)
{
threadcount--;
for(j=i;j<threadcount;j++)
{
thread[j]=thread[j+1];
}
}
}

//进程排序优先级由高至低
for(j=0;j<threadcount-1;j++)
{
for(i=0;i<threadcount-1-j;i++)
{
if((thread[i].priority)<(thread[i+1].priority))
{
t=thread[i];
thread[i]=thread[i+1];
thread[i+1]=t;
}
//如果优先级相等,进程等待时间片数readycount大的排在前
if(thread[i].priority==thread[i+1].priority)
if(thread[i].readycount<thread[i+1].readycount)
{
t=thread[i];
thread[i]=thread[i+1];
thread[i+1]=t;
}
}
}

for(i=0;i<threadcount;i++)
{
if(thread[i].startblock==0)
thread[i].state=2;
else
{
thread[i].state=1;
break;
}
}

for(i=0;i<threadcount;i++)
{
if(thread[i].state==1)
run();
else
if(thread[i].state==0)
ready();
else
block();
}

cout<<endl;

if(threadcount==1)
if(thread[0].alltime==0)
break;
}

}

这个是C++的!需要改写和我联系好了1
#include<iostream.h>
#include<string.h>
#include<math.h>
#include<ctype.h>
#define maxbuffer 64
void main()
{
char display_out(char out_ch[maxbuffer], char ch[32]);
//int caculate_array(char out_ch[32]);
static int i=0;
static int j=0;
char ch[maxbuffer],s[maxbuffer],out[maxbuffer];
cout<<"请输入中缀表达式: ";
cin>>ch;
for(i=0;i<maxbuffer;i++)
{out[i]=ch[i];}
cout<<"请确认您输入的表达式: ";
while(out[j]!='#')
{
cout<<out[j];
j++;
}
cout<<'#'<<endl;
display_out(s,out);
//caculate_array;
}

char display_out(char out_ch[32],char ch[])
{
int top=-1;
int i=0,data[maxbuffer],n;
int j=0;

char sta[20];
while(ch[i]!='#')
{
if(isalnum(ch[i]))
{
while(isalnum(ch[i]))
{
out_ch[j]=ch[i];
j++;
i++;
}out_ch[j]=' ';j++;
}
else{

switch(ch[i])
{

case '+':
case '-': if(sta[top]=='('||top==-1)
{
top++;
sta[top]=ch[i];
i++;
}

else
{
//j--;
out_ch[j]=sta[top];
j++;
top--;
//i++;
}
break;
//break;
case '*':
case '/':if(sta[top]=='*'&&sta[top]=='/')
{
out_ch[j]=sta[top];
j++;
//i++;
top--;
}

else
{
top++;
sta[top]=ch[i];
i++;
}
break ;
//break;
case '(':top++;
sta[top]=ch[i];
i++;
break;
case ')':if(sta[top]=='(')
{
top--;
i++;
}
if(top==-1)
{
cout<<"错误: 第"<<j<<"个位置的“)”没有找到与之匹配的“(”";
ch[i]='#';j=0;
}
else
{
//while(sta[top]!='('){

out_ch[j]=sta[top];
top--;
j++;
//}break;

}
break;
/*case '#': out_ch[j]='#';
j++;
break;*/
default:
cout<<" your input is error"<<endl;
ch[i]='#';
j=0;
break;
}
}
}while(top!=-1)
{

out_ch[j]=sta[top];j++;
top--;
}

out_ch[j]='#';
n=0;

cout<<"逆波兰表达式为: ";

while(out_ch[n]!='#')
{
cout<<out_ch[n];
n++;
}
cout<<endl;
j=0;
/*while(ch[j]!='#')
{
top++;
data[top]=ch[j];
}
cout<<data[top];
*/
return out_ch[maxbuffer];

}