Hello. I need help with the Bucket Sort. I searched through the C++ board, as well as my book and couldn't find anything useful to me. The code is below.
Thanks!

Code:
#include <iostream>
#include <iomanip>
#include <vector>
#include <ctime>
#include <cstdlib>

using namespace std;

vector <int> FillVec (void);
void PrintVec (vector <int>);
void BucketSort (vector <int> &);
void Gathering (vector <int> &, int);

int main (void)
{
	vector <int> IntVector (55);
	
	srand(time(NULL));
	
	int number,digitCnt=0;
	cout<<"Enter the Number: ";
	cin>>number;
	
	while(number)
		{
	number=number/10;
	digitCnt++;
		}
	cout<<digitCnt<<endl;

	IntVector = FillVec ();
	PrintVec (IntVector);
	BucketSort (IntVector);
	PrintVec (IntVector);
	return 0;
}
vector <int> FillVec (void)
{
	int cnt = 0;
	vector <int> TempVec (55);

	for (int i = 0; i < 50; i++)
	{

		TempVec[i] = rand() % 100 + 1;
	}
	return TempVec;
}
void PrintVec (vector <int> ivec)
{
	
	for (int index = 0; index < 50; index++)
	{
		cout << ivec[index] << endl;
	}
}
void BucketSort (vector <int> & ivec)
{
	for (int Pass = 10; Pass < 1000000; Pass *= 10)
	{
		Gathering (ivec, Pass);
	}
}
void Gathering (vector <int> & ivec, int ps)
{
	int pairs, index, x, y, z;
	vector <int> aVec(10);

	x = y;
	for(index = 0; index < 50; index++)
	{
		z = ivec[index] / ps;
		z = z * ps;
		z = ivec[index] - z;
		aVec[z].push_back(ivec[index]);
	}
	for(y = 0; y < 10; y++)
	{
		for(pairs = 0; pairs < aVec[pairs].size(); pairs++)
		{
			ivec[x] = aVec[y][pairs];
			x++;
		}
	}
}