📄 1.cpp
字号:
#define n 13
#define NULL 0
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
#include"duilie.h"
#include"linjiebiao.h"
typedef struct code//课程信息
{
char data[5];
char name[20];
int grade;
int term;
}course;
void DisplayGraph(AlGraph &G,course Y[])//输出课程相关情况
{
int i,j;
ArcNode *p;
for(i=1;i<=G.vexnum;i++)
{
cout<<Y[i].data;
for(j=1;j<=(5-strlen(Y[i].data));j++)
cout<<" ";
cout<<"相关课程编号 ";
p=G.a[i].firstarc;
while(p)
{
cout<<Y[p->adjvex].data<<" ";
p=p->nextarc;
}
cout<<endl;
}
}
void choose_course(AlGraph &G,Linkqueue &Q,course Y[])//选课
{
int i,x,count;
ArcNode *p;
int visit[n];
for(i=1;i<=G.vexnum;i++)
visit[i]=0;
for(x=1;x<=6;x++)
{
count=0;
for(i=1;i<=G.vexnum;i++)
if(!G.a[i].indegree&&!visit[i]) Enqueue(Q,i);
while(!Emptyqueue(Q))
{
Dequeue(Q,i);
count+=Y[i].grade;
if(count<=10)
{
visit[i]=1;
Y[i].term=x;
p=G.a[i].firstarc;
while(p)
{
G.a[p->adjvex].indegree--;
p=p->nextarc;
}
}
else count-=Y[i].grade;
}
}
}
void main()
{
AlGraph G;
Linkqueue Q;
InitQueue(Q);
int i,x,j;
course Y[n]={{-1," 0"},
{"C1","程序设计基础",2,0},
{"C2","离散数学",3,0},
{"C3","数据结构",4,0},
{"C4","汇编语言",3,0},
{"C5","语言设计分析",2,0},
{"C6","计算机原理",3,0},
{"C7","编译原理",4,0},
{"C8","操作系统",4,0},
{"C9","高等数学",7,0},
{"C10","线形代数",5,0},
{"C11","普通物理",2,0},
{"C12","数值分析",3,0}};
CreateGraph(G);
choose_course(G,Q,Y);
cout<<"教学计划编制"<<endl;
for(x=1;x<=6;x++)
{
cout<<"学期"<<x<<endl;
for(i=1;i<=G.vexnum;i++)
if(x==Y[i].term)
{
cout<<Y[i].name;
for(j=1;j<=(15-strlen(Y[i].name));j++)
cout<<" ";
cout<<"代号"<<Y[i].data;
for(j=1;j<=(5-strlen(Y[i].data));j++)
cout<<" ";
cout<<"学分为"<<Y[i].grade<<endl;
}
cout<<endl;
}
DisplayGraph(G,Y);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -