当前位置: 首页>>代码示例>>C++>>正文


C++ Students::GetSubject方法代码示例

本文整理汇总了C++中Students::GetSubject方法的典型用法代码示例。如果您正苦于以下问题:C++ Students::GetSubject方法的具体用法?C++ Students::GetSubject怎么用?C++ Students::GetSubject使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Students的用法示例。


在下文中一共展示了Students::GetSubject方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: SplitStudents

bool SplitStudents()
{
	ofstream ofs;
	ofs.open("log.txt");
	static int tmpMatrix[3][3] = { 0 };

	for (size_t i = 0; i < TypeNum; i++)
	{
		Students* pp = pStu[i];
		cout << "processing " << pp->GetName() << "..." << endl;

		for (size_t mi = 0; mi < 3; mi++)
		{
			tmpMatrix[mi][0] = copySubjectMatrix[mi][pp->m_s1];
			tmpMatrix[mi][1] = copySubjectMatrix[mi][pp->m_s2];
			tmpMatrix[mi][2] = copySubjectMatrix[mi][pp->m_s3];
		}

		//if (ofs.is_open())
		//{
		//	ofs << "processing " << pp->GetName() << "..." << endl;
		//	ofs << "original:" << endl;
		//	for (size_t mi = 0; mi < 3; mi++)
		//	{
		//		ofs << tmpMatrix[mi][0] << " " << tmpMatrix[mi][1] << " " << tmpMatrix[mi][2] << endl;
		//	}
		//	ofs << endl;
		//}

		int num = pp->m_stuNum;
		int index = 0;
		while (num > 0)
		{
			index = (rand() % 6);
			bool minusSuccess = false;
			for (size_t identityIndex = 0; identityIndex < 6; identityIndex++)
			{
				int ii = (index + identityIndex) % 6; // 不断变换单位矩阵

				// 检查根据当前单位矩阵是否有学生可以分
				bool hasStudent = true;
				for (size_t ri = 0; ri < 3; ri++)
				{
					hasStudent = true;
					for (size_t ci = 0; ci < 3; ci++)
					{
						if (identityMatrix[ii][ri][ci] == 1)
							hasStudent = tmpMatrix[ri][ci] > 0;
					}
					if (!hasStudent)
						break;
				}

				if (!hasStudent)
					continue;
				else
				{
					// 分学生
					for (size_t ri = 0; ri < 3; ri++)
					{
						for (size_t ci = 0; ci < 3; ci++)
						{
							if (identityMatrix[ii][ri][ci] == 1)
							{
								tmpMatrix[ri][ci]--;
								classes[ri][pp->GetSubject(ci)].Push(pp->GetName(), pp->m_stuNum - num); // 分学生
							}
						}
					}
					num--;
					minusSuccess = true;
					break;
				}
			}
			// 由于某个班级人数分完了导致分不了,此时需要调整班级人数来容纳新的学生
			// 这里可以通过添加班级人数的最大误差来限制人数
			if (!minusSuccess)
			{
				vector<pair<int, int>> tmpIndex; // 有些课时不排课(用-1表示),找出来
				for (size_t ii = 0; ii < 3; ii++)
				{
					for (size_t jj = 0; jj < 3; jj++)
					{
						if (tmpMatrix[ii][jj] == -1)
							tmpIndex.push_back(pair<int, int>(ii, jj));
					}
				}

				int iii = 0;
				for (iii = 0; iii < 6; ++iii)
				{
					int sum = 0;
					for (int jjj = 0; jjj < tmpIndex.size(); ++jjj)
					{
						sum += identityMatrix[iii][tmpIndex[jjj].first][tmpIndex[jjj].second];
					}
					if (sum == 0)
						break;
				}

//.........这里部分代码省略.........
开发者ID:qqchen,项目名称:paike,代码行数:101,代码来源:main.cpp


注:本文中的Students::GetSubject方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。