From OriWiki
debug draw
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
const int M=25, N=40;
typedef vector<vector<bool> > Board;
void initBoard(Board& board) {
for(int m=0; m<M; ++m) {
board.push_back(vector<bool>());
for(int n=0; n<N; ++n)
board[m].push_back(false);
}
}
void plotBoard(Board& board, double x, double y) {
int i = M/2-(int)y;
int j = N/2 + (int)x;
if(i<0 || j<0 || i>=M || j>=N) {
cerr << "out of bound (" << i << ',' << j << ")\n";
return;
}
board[i][j] = true;
}
void printBoard(Board& board) {
for(unsigned int i=0; i<board.size(); ++i) {
for(unsigned int j=0; j<board[i].size(); ++j)
if(board[i][j])
cout << '*';
else
cout <<' ';
cout << '\n';
}
}
int main() {
vector<vector<bool> > board;
initBoard(board);
for (double alpha=0; alpha < 6.28; alpha+=0.1)
plotBoard(board,cos(alpha)*10,sin(alpha)*10);
printBoard(board);
}
night driver
#include <iostream>
#include <cstdlib>
void printSpaces(int n) {
for(int i=0; i<n; ++i)
std::cout << ' ';
}
int main() {
int s = 15;
while(true) {
s += std::rand()%3-1;
if(s<0)
s = 0;
else if(s>40)
s = 40;
printSpaces(s);
std::cout << "** **\n";
}
}
Binary Search Tree
#include <iostream>
class Tree {
class Node {
public:
int m_data;
Node *m_ls, *m_rs;
Node(int data) : m_data(data),m_ls(0),m_rs(0) {}
};
Node *m_root;
static void print (Node *p) {
if(!p)
return;
std::cout << "(";
print(p->m_ls);
std::cout << "," << p->m_data << ",";
print(p->m_rs);
std::cout << ")";
}
public:
Tree():m_root(0) {}
void insert(int data) {
Node **p = &m_root;
while (*p) {
if (data < (*p)->m_data)
p = &((*p)->m_ls);
else
p = &((*p)->m_rs);
}
*p = new Node(data);
}
void print() { print (m_root); }
};
int main() {
Tree tr;
int array[] = {8,1,5,2,9,7,4,3};
int N = sizeof(array)/sizeof(int);
for(int i=0; i< N; ++i)
tr.insert(array[i]);
tr.print();
}