sublime 坑点?

2018-11-27 18:44:15 +08:00
 long1

最近做 os 家庭作业,sublime Text3 编辑 c++程序,遇到了输入读不完就退出了运行了。

只是用了指针来实现?求大佬指点小弟。

#include <bits/stdc++.h>
#include <stdio.h>
#include <stdlib.h>
#define mp make_pair
#define fi first
#define se second
#define llt long long 
using namespace std;

char s[10][1100];
const int WORKSIZE=32;
typedef pair<int,int> pii;
pii WorkBlock[WORKSIZE];

int mixnTime;
int startTime=0;
int useSize=0;
struct PBlock{
	int id;
	int priority;
	int time;
	int blocksize;
	struct PBlock* nxt;
};


struct PBlock* readying;

void add(struct PBlock* tmp){
	// 队列为空
	if(readying == NULL){
		readying = tmp;
		return ;
	}

	//队首优先级小于 tmp
	if((readying->priority)<(tmp->priority)){
		tmp->nxt = readying;
		readying = tmp;
		return;
	}

	struct PBlock* pre=readying;
	struct PBlock* suf=pre->nxt;

	//cout<<(pre->priority)<<" ";
	while(suf!=NULL){
		if((suf->priority)<(tmp->priority))
			break;
		pre = suf;
		suf = pre->nxt;
		//cout<<(pre->priority)<<" ";
	}

	tmp->nxt = pre->nxt;
	pre->nxt = tmp;
	//cout<<pre->priority<<endl;
	return ;
}

void Print_Line(){
	for(int i=0;i<170-3;++i)
		printf("%c","-\n"[i==170-4]);
}

void Print(){
	printf("Time: %d\n",startTime );

	Print_Line();
	printf("| %s |",s[0]);
	for(int i=0;i<WORKSIZE;++i)
		printf(" %2d |",i);
	printf("\n");

	Print_Line();
	printf("| %s |",s[1]);
	for(int i=0;i<WORKSIZE;++i)
		if(WorkBlock[i].se>0)printf(" %2d |",WorkBlock[i].fi);
		else printf(" %2c |",' ');
	printf("\n");

	Print_Line();
}

void Running(){

	if((readying==NULL)||WORKSIZE-useSize<(readying->blocksize)){
		int costTime=mixnTime;
		mixnTime=0x3f3f3f3f;
		for(int i=0;i<WORKSIZE;++i){
			if(WorkBlock[i].se==0) continue;
			WorkBlock[i].se-=costTime;
			if(WorkBlock[i].se==0) --useSize;
			else mixnTime=min(mixnTime,WorkBlock[i].se);
		}
		//cout<<mixnTime<<endl;
		Print();
		startTime+=costTime;
		return;
	}

	for(int i=0;i<WORKSIZE;++i){
		if((readying->blocksize)==0)break;

		if(WorkBlock[i].se>0)continue;
		WorkBlock[i].fi=readying->id;
		WorkBlock[i].se=readying->time;
		++useSize;
		--(readying->blocksize);
	}

	mixnTime=min(mixnTime,readying->time);
	struct PBlock* tmp=readying->nxt;
	free(readying);
	readying=tmp;
}
int main(){

	scanf("%s",s[0]);
	scanf("%s",s[1]);
	//freopen("in.txt","r",stdin);
	memset(WorkBlock,0,sizeof WorkBlock);

	int BlockSize;

	cin>>BlockSize;
	for(int i=0;i<BlockSize;++i){
		struct PBlock* tmp = (struct PBlock*) malloc(sizeof (struct PBlock*));
		tmp->nxt = NULL;   
		scanf("%d%d%d%d",&(tmp->id),&(tmp->priority),&(tmp->time),&(tmp->blocksize));
		//cout<<(tmp->id)<<" "<<(tmp->priority)<<" "<<(tmp->time)<<endl;
		add(tmp);
	}
	//cout<<1<<endl;
	while((useSize>0)||(readying!=NULL))
	    Running();

	return 0;
}


3406 次点击
所在节点    Sublime Text
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/512059

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX