2008年9月14日 星期日

程式碼高亮度過濾

本來是使用CSS對pre做出明顯的差別,但是後來覺得這樣程式碼的閱讀性還是很低,因此把syntaxhighlighter裝上。
/*Code*/
pre {
  display: block;
  font-family: 'Courier New';
  font-size: 9pt;
  overflow: auto;
  border: 1px solid #ccc;
  padding: 10px 10px 10px 21px;
  max-height: 1200px;
  line-height: 1.2em;
  letter-spacing: 0px;
  color: #000;
  background: #ccc url(code_bg.gif) left top repeat-y;
}
CSS連接碼,一定要放在編輯HTML,Head之中
<link href='你的目錄/Styles/SyntaxHighlighter.css' rel='stylesheet' type='text/css'/>
Javascript連接檔,在旁邊開一個HTML/JavaScript,名稱留白,放入即可
<script language="javascript" src="你的目錄/Scripts/shCore.js"></script>
<script language="javascript" src="你的目錄/Scripts/shBrushCSharp.js"></script>
<script language="javascript" src="你的目錄/Scripts/shBrushCpp.js"></script>
<script language="javascript" src="你的目錄/Scripts/shBrushJava.js"></script>
<script language="javascript" src="你的目錄/Scripts/shBrushPhp.js"></script>
<script language="javascript" src="你的目錄/Scripts/shBrushJScript.js"></script>
<script language="javascript" src="你的目錄/Scripts/shBrushRuby.js"></script>
<script language="javascript" src="你的目錄/Scripts/shBrushSql.js"></script>
<script language="javascript" src="你的目錄/Scripts/shBrushXml.js"></script>
<script language="javascript" src="你的目錄/Scripts/shBrushCss.js"></script>
<script language="javascript">
dp.SyntaxHighlighter.ClipboardSwf = '你的目錄/Scripts/clipboard.swf';
dp.SyntaxHighlighter.BloggerMode();
dp.SyntaxHighlighter.HighlightAll('code');
</script>

2008年9月1日 星期一

計算兩者之間花了多少時間

code
#include <iostream>

using namespace std;

int main ()
{
  time_t start,end;
  // save input string
  char szInput [256];
 
  // count start
  time (&start);
  printf ("Please, enter your name: ");
  gets (szInput);
  // count stop
  time (&end);
  // save cost time dif = end - start
  double dif = difftime (end,start);
  printf ("Hi %s.\n", szInput);
  printf ("You have taken %.2lf seconds to type your name.\n", dif );
 
  system("pause");
}

2008年8月30日 星期六

中置轉成後置

code
package javahomework;

import javax.swing.JOptionPane;

class postfix {
 private char stack[], z[];
 private int pri[] = { 0, 1, 1, 2, 2, 3 };
 private char oper[] = { '(', '+', '-', '*', '/', '^' };
 private int top, n, a;
 private String postfix = "";
 private char x[], y;

 public postfix() {
  n = 50;
  top = 0;
  a = 0;
  stack = new char[n];
  z = new char[n];
 }

 public String infix_to_postfix(String infix) {
  int i = 0, j = infix.length();
  x = infix.toCharArray();
  for (i = 0; i < j; i++) {
   switch (x[i]) {
   case '(':
    push(x[i]);
    break;
   case ')':
    y = pop();
    while (!empty() && y != '(') {
     z[a++] = y;
     y = pop();
    }
    break;
   case '+':
   case '-':
   case '*':
   case '/':
   case '^':
    y = top();
    while (pre(y) >= pre(x[i])) {
     z[a++] = pop();
     y = top();
    }
    push(x[i]);
    break;
   default:
    z[a++] = x[i];
   }
  }
  while (!empty()) {
   z[a++] = pop();
  }
  for (i = 0; i <= a - 2; i++) {

   postfix += z[i];
   postfix += " ";
  }
  return postfix;
 }

 private boolean empty() {
  return (top < 0) ? true : false;
 }

 private boolean full() {
  return (top >= n - 1) ? true : false;
 }

 private void push(char sta) {
  stack[++top] = sta;
 }

 private char pop() {
  return stack[top--];
 }

 private char top() {
  return stack[top];
 }

 private int pre(char op) {
  for (int i = 0; i < 6; i++)
   if (oper[i] == op)
    return pri[i];
  return -1;
 }

 private void check(char x, char y) {
  y = top();
  while (pre(y) >= pre(x)) {
   postfix += pop();
   y = top();
  }
  push(x);
 }

}

public class HW18 {

 public static void main(String arg[]) {
  String input = JOptionPane.showInputDialog(null,
    "Please input string (ex.1+2-3)");
  postfix p = new postfix();
  JOptionPane.showMessageDialog(null, 
    String.valueOf(p.infix_to_postfix(input)));
 }
}