Thursday, July 3, 2008

Reverse a Stack in Place

/*
Reverse a stack in place
*/
//#include "stdafx.h"
#include "iostream"
#include "stack"
using namespace std;

void Push(stack &myStack , int a)
{
int m = (int)myStack.top();
myStack.pop();
if (myStack.size() != 0)
Push(myStack , a);
else {
myStack.push(a);}

myStack.push(m);

}

void reverse(stack &myStack)
{
int m = (int)myStack.top();
myStack.pop();
if (myStack.size() != 1)
reverse(myStack);
Push(myStack , m);
}

int main()
{
stack S;
//add the stack elements
for(int i = 1; i < 6; i++)
S.push(i);
//display the stack elements
cout << "Original Stack" << endl;
while (!S.empty()) {
cout << S.top() << '\t';
S.pop(); // remove top element
}
cout << endl;


//add the stack elements
for(int i = 1; i < 6; i++)
S.push(i);

reverse(S); //reverse the stack

//display the reversed stack
cout << "Reversed Stack" << endl;
while (!S.empty()) {
cout << S.top() << '\t';
S.pop(); // remove top element
}
cout << endl;
system("PAUSE");
return 0;
}

Wednesday, July 2, 2008

6/49 lottery number generator C++ code

When I visited Vancouver Canada in 2008, I played this 6/49 lottery. A friend of mine there asked me to write this code. It generates 6 random numbers range over [1,49].


/*
6/49 lottery number generator
*/

#include "iostream"
#include "vector"
#include
using namespace std;
int main ()
{
int iRndNum;
vector Numbers;
int i;

for(i=1; i <= 49; i++)
Numbers.push_back(i);


/* initialize random seed: */
srand (time(NULL) + rand());


cout << " The 6/49 numbers are" << endl;
for(i =1; i <= 6; i++){
/* generate a random number: */
iRndNum = rand() % (49 - i + 1) ;

cout << Numbers[iRndNum] << "\t";
Numbers.erase(Numbers.begin() + iRndNum, Numbers.begin() + iRndNum + 1);
}
cout << endl;

system("PAUSE");
return 0;
}