Cpp Samples

From OriWiki

Jump to: navigation, search

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(); 
}