All pastes #1415 Raw Edit

Anonymous

public text v1 · immutable
#1415 ·published 2004-10-12 22:05 UTC
rendered paste body
#include "mapproc.h"
#include <fstream>
#include <iostream>
#include <algorithm>
//#include <string>
using namespace std;
bool WriteFiles(map<int,string> &m, char *pFileName);
bool WriteFiles2(map<string,int> &m, char *pFileName);
typedef map<int,string>::iterator mIT;

bool ReadInputFile(map<int,string> &m, char *pFileName)
{
	int c=0;
	mIT it = m.begin();
	ifstream infile;
	infile.open(pFileName);
	if (infile.fail()) 
	{
		cout << "Error opening the file.\n";
		return false;
	}
	while (!infile.eof() )
	{
		char s[15];
		infile.getline(s,15,'\t');
		char *tmp;
		int k;
		k = strtol(s,&tmp,10);
		if(k>0)
		{
			for (it = m.begin(); (it != m.end()); ++it)
			{
				if(k==it->first)
				{
					c++;
					cout << "Duplicate ID: " << k << " stored in " << k + 2000 <<". eg. original ID + 2000\nTotal Duplicates found: " << c << "\n\n";
					k=k+2000;
				}
			}
			char n[10];
			infile.getline(n,10,'\n');
			m[k]=n;
		}
	}
	infile.close();
	return true;
	//foo = strtol(input, &tmp, 0);
	// if (tmp == input) {
	//// is not a number
	//}
}
bool OutputNumerically(map<int,string> &m, char *pFileName)
{
	/*mIT it = m.begin();
	ofstream outfile;
	outfile.open(pFileName);
	if (outfile.fail())
	{
		cout << "Error opening the file for writing.\n";
		return false;
	}
	for (it = m.begin(); (it != m.end()); ++it)
	{
		outfile << it->first << "\t" << it->second << "\n";
	}
	outfile.close();
	return true;*/
	if(WriteFiles(m,pFileName))
		return true;
	else
		return false;
}
void SplitIntoStaffAndStudents(map<string,int> &mStaff,map<string,int> &mStudents, map<int,string> &mAll)
{
	mIT it = mAll.begin();
	for (it = mAll.begin(); (it != mAll.end()); ++it)
	{
		if((it->first)/1000==1 || (it->first)/1000==3)
		{
			mStaff[it->second]=it->first;
		}
	}
	WriteFiles2(mStaff, "StaffList.txt");
	for (it = mAll.begin(); (it != mAll.end()); ++it)
	{
		if((it->first)/1000==2 || (it->first)/1000==4)
		{
			mStudents[it->second]=it->first;
		}
	}
	WriteFiles2(mStudents, "StudentList.txt");
}
bool OutputAlphabetically(map<int,string> &m, char *pFileName)
{
	mIT it = m.begin();
	map<string,int> mapAlpha;
	map<string,int>::iterator itAlpha = mapAlpha.begin();
	ofstream outfile;
	outfile.open(pFileName);
	if (outfile.fail())
	{
		cout << "Error opening the file for writing.\n";
		return false;
	}
	//int counter = 0; //counter was used to trouble shoot the for loop.
	for (it = m.begin(); (it != m.end()); ++it)
	{
		//counter++;
		if(mapAlpha.find(it->second)== mapAlpha.end())
		{
			//cout << "if: " << counter << " \n";
			mapAlpha[it->second] = (it->first);
		}
		else
		{
			//cout << "else: " << counter << "\n";
			char buffer[256];
			it->second += itoa(it->first,buffer,10);
			mapAlpha[it->second] = (it->first);
		}
		//cout << counter << "\n";
	}
	for (itAlpha = mapAlpha.begin(); (itAlpha != mapAlpha.end()); ++itAlpha)
	{
		outfile << itAlpha->first << "\t" << itAlpha->second << "\n";
	}
	outfile.close();
	return true;
}
bool WriteFiles(map<int,string> &m, char *pFileName)
{
	mIT it = m.begin();
	ofstream outfile;
	outfile.open(pFileName);
	if (outfile.fail())
	{
		cout << "Error opening the file for writing.\n";
		return false;
	}
	for (it = m.begin(); (it != m.end()); ++it)
	{
		outfile << it->first << "\t" << it->second << "\n";
	}
	outfile.close();
	return true;
}
bool WriteFiles2(map<string,int> &m, char *pFileName)
{
	mIT it = m.begin();
	ofstream outfile;
	outfile.open(pFileName);
	if (outfile.fail())
	{
		cout << "Error opening the file for writing.\n";
		return false;
	}
	for (it = m.begin(); (it != m.end()); ++it)
	{
		outfile << it->first << "\t" << it->second << "\n";
	}
	outfile.close();
	return true;
}
// other function implementation here
//outfile << it->first << "\t" << it->second << "\n";