⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prg11_3.cpp

📁 数据结构c++语言描述stl版 威廉兄弟的好书,值得看,这是配书代码
💻 CPP
字号:
#ifdef _MSC_VER
// disable warning messages that identifier was truncated
// to 'number' characters in the debug information
#pragma warning(disable:4786)
#endif	// _MSC_VER

// File: prg11_3.cpp
// the program reads a file "curracct.dat" containing the login names of
// university students who want a computer account for the current academic
// year. it also reads the file "oldacct.dat" containing the login names of
// students from the previous year. using set operations, the program
// computes the set of new accounts, accounts carried over from the previous
// year, and accounts for students who have not requested a current
// account. using writeContainer(), the program outputs the login names
// in the sets

#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <set>

#include "d_setops.h"
#include "d_util.h"

using namespace std;

int main()
{
	// declare sets for current and new computer accounts along with iterator
	set<string> oldAcct, currAcct, newAcct, carryOverAcct, obsoleteAcct;

	// objects used by the program
	string acct;
	ifstream finOldAcct, finCurrAcct;

	// open file of old accounts and current accounts
	finOldAcct.open("oldacct.dat");
	finCurrAcct.open("curracct.dat");

	// input the set of old accounts
	while(true)
	{
		finOldAcct >> acct;
		if (!finOldAcct)
			break;
		oldAcct.insert(acct);
	}

	// input the set of current accounts
	while(true)
	{
		finCurrAcct >> acct;
		if (!finCurrAcct)
			break;
		currAcct.insert(acct);
	}

	// use set intersection to determine the set of
	// carryover accounts
	carryOverAcct = currAcct * oldAcct;

	// use set differnce to determine the set of new accounts
	// and obsolete accounts
	newAcct = currAcct - oldAcct;
	obsoleteAcct = oldAcct - currAcct;

	// output the set of old accounts
	cout << "Old Accounts:" << endl;
	writeContainer(oldAcct.begin(), oldAcct.end(), "   ");
	cout << endl << endl;

	// output the set of current accounts
	cout << "Current Accounts:" << endl;
	writeContainer(currAcct.begin(), currAcct.end(), "   ");
	cout << endl << endl;

	// output the set of new accounts
	cout << "New Accounts:" << endl;
	writeContainer(newAcct.begin(), newAcct.end(), "   ");
	cout << endl << endl;

	// output the set of carryover accounts
	cout << "Carryover Accounts:" << endl;
	writeContainer(carryOverAcct.begin(), carryOverAcct.end(), "   ");
	cout << endl << endl;

	// output the set of obsolete accounts
	cout << "Obsolete Accounts:" << endl;
	writeContainer(obsoleteAcct.begin(),obsoleteAcct.end(), "   ");
	cout << endl;

	return 0;
}

/*
File "curracct.dat"

fbrue
ascott
wtubbs

File "oldacct.dat"

tmiller
lhung
fbrue
gharris

Run:

Old Accounts:
fbrue   gharris   lhung   tmiller

Current Accounts:
ascott   fbrue   wtubbs

New Accounts:
ascott   wtubbs

Carryover Accounts:
fbrue

Obsolete Accounts:
gharris   lhung   tmiller
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -