2009年10月10日星期六

php facebook API 自寫FACEBOOK遊戲

http://apps.facebook.com/fqygame/

最近BLOG很久沒更新

主要是把時間花在研究FACEBOOK 和 PHP 之間的關係

最一開始是偶然在網路上看到了,可以利用JAVA將PHP寫入GOOGLE內

之後就在研究這個東西

不過幾天後又很偶然的發現了!!

原來FACEBOOK可以直接支援PHP

於是研究兩天之後就決定用PHP來寫FACEBOOK遊戲了

目前已經架構OK!!

名稱暫定 :

FQbattle


http://apps.facebook.com/fqygame/

討論區

大家可以來玩玩看!!
目前介面還不是很好看啦 = ="

其實說實在的FACEBOOK開發手冊上面

寫的很詳盡

而且他還有一個語法測試機

也都不錯用

而且期時會用到的語法就那些吧!!

有興趣的話 大家也可以試看看喔!!

2009年9月16日星期三

GOGOBOX 搜尋引擎(PHP程式碼公開)

===============討論區======================
福球亂彈 => 福球程式設計(PHP) => PHP主題討論
=> GOGOBOX搜尋引擎測試
=> GOGOBOX 搜尋引擎(PHP程式碼公開)

與 福球亂彈 => GOGOBOX 搜尋引擎(PHP程式碼公開) 同時發布
(要討論 歡迎到此 或 留言)

=======GOGOBOX 搜尋引擎(註記)===========

從寫好到現在已經過了一段時間了
大概搜到有五十多萬筆就停止了
原因主要是 :
  • 資料庫目前還是在自己的小筆電上面,要公開搜尋要移到"大主機"上
  • 本人沒有付費空間或是"大主機",只有免費空間
  • 免費空間放三十萬筆就爆了(修一修頂多放五十萬筆),但GOGOBOX有上百萬筆
  • 已經有人寫出來了,而且也夠好了
大概在前個禮拜停止之後,至今已經快要淡忘了= ="
所以決定在忘記之前,快點先寫出來 (BLOG+福球亂彈)

=======GOGOBOX 搜尋引擎(原理)===========

其實只是使用最簡單也最笨的搜尋方法 "蜘蛛爬行法" (不太清楚是不是這樣叫)

爬行的只有會員ID,然後每個ID裡面都有許多檔案

這些檔案就用內建的GOGOBOX搜尋器,去搜尋

本人是一次搜尋最多五百筆(當然,你要一次用更多都沒關係),如果超過五百筆就跳頁

(使用瀏覽器看最多五十筆,他是記錄在COOKIE,改成五百)

(程式碼裡面全部都可以很清楚的看到方法,歡迎大家討論)


=======GOGOBOX 搜尋引擎(PHP程式碼)===========
//(因為是邊測試邊寫,所以寫的超亂的,未整理過,請包含)
//(邊碼為UTF8)
//(PS此篇還需要先用CURL登入,並將SESSION記錄起來才可使用GOGOBOX內建搜尋)

//這邊是開始使用"蜘蛛爬行法"
//30000000 前面開頭的"3"也等於網址的開頭 http://box3.gogobox.com.tw
//要修改的話要全部修改(約有兩三個)
//由於PHP有時間限制,所以要先改過,本人約改成兩個小時
//然後一次五千筆(可以開好多個網頁一次進行)

for($a=20001;$a<=25000;$a++){

$no = $a + 30000000; //GOGOBOX 會員ID 也是BOX ID

gogo_load($no);//呼叫主程式

}

//GOGOBOX 搜尋引擎 主程式

function gogo_load($no){

$post['box_no']=$no;//GOGOBOX 會員ID 也是BOX ID

$post['nPageNo']='1';//搜尋第幾頁

$row_page=500;//一次筆數(使用GOGOBOX內建搜尋)


$cookie_file_path = "d:\cookie.txt";//紀錄SESSION的地方,GOGOBOX內建搜尋必須登入


$ch = curl_init();


curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);

curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie_file_path);


//get info


//這行為登入的網址,要先登入一次GOGOBOX然後把記錄的SESSION記錄到上面的//d:\cookie.txt

//不過因為只用一次,之後都可以使用,所以登入的程式碼刪了 =="

//其實主要是因為是邊研究邊寫,所以之後覺得沒用,就...
//$login ='http://client.gogobox.com.tw:8000/caccessX';

$url = 'http://box3.gogobox.com.tw:8037/app/list_file.cgi?box_no='.$post['box_no'];

curl_setopt($ch, CURLOPT_URL,$url);

$num = curl_exec($ch);

$num = strip_tags($num,'');

$num = strstr($num,'全部資料夾');

$num = strstr($num,'(');

$num = (int)substr($num,1,6);


//以上是判斷是否有資料,如果有才執行以下"使用GOGOBOX內建搜尋 搜尋檔案"
//不過之後覺得這邊可以改一下,速度可以更快

if($num !=0){

$page = ceil($num/$row_page);

//===============================================

$url = 'http://box3.gogobox.com.tw:8037/app/list_file.cgi';



//$post['nPageNo']='1';

$once_num = 0;

for($i=1;$i<=$page;$i++){



load_gogobox($post['box_no'],$i,$num,$row_page,$page); //呼叫 使用GOGOBOX內建搜尋



}



}else{

echo $no.'&nbsp;';//if

}

curl_close ($ch);


}


//這邊就是發送資訊給GOGOBOX叫他搜尋某BOX的所有檔案

//一次搜尋五百筆(預設)

//然後取得資料

function load_gogobox($post_no,$i,$num,$row_page,$page){

$chx = curl_init();

$cookie_file_path = "d:\cookie.txt"; //登入SESSION都記錄在這邊

curl_setopt($chx, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($chx, CURLOPT_COOKIEJAR, $cookie_file_path);

curl_setopt($chx, CURLOPT_COOKIEFILE,$cookie_file_path);



$url = 'http://box3.gogobox.com.tw:8037/app/list_file.cgi';

$post['box_no'] = $post_no; //GOGOBOX會員ID,BOX ID

$post['nPageNo'] = $i; //第幾頁

if($i==$page){

$once_num = $num%$row_page;

}else{

$once_num=$row_page;

}

curl_setopt($chx, CURLOPT_POST,1);

curl_setopt($chx, CURLOPT_URL,$url);

curl_setopt($chx, CURLOPT_POSTFIELDS, $post);


//GOGOBOX 是利用COOKIE來記錄要顯示幾筆

//很久以前看的時候沒有發現

//是前個月(應該吧)看他的JAVASCRIPT 才發現的 =="

curl_setopt($chx, CURLOPT_COOKIE, "CbFileBoxListCnt=".$row_page." ; path=/"); //顯示X筆

$result = curl_exec($chx);

gogobox($result,$once_num);//開始把GOGOBOX內建搜尋的結果(五百筆) 紀錄出來

curl_close ($chx);



}




function gogobox($content,$once_num){ //取回 分析 GOGOBOX內建搜尋

//主要就是一些字串處理


$content = strstr($content,'<!-- list table -->');

$content = substr($content,0,strpos($content,'<!-- list table END -->'));


//echo $content;

for($i=0;$i<$once_num;$i++){

$content = substr($content,strpos($content,'colspan=\'6\'')+10);



$content_link = strip_tags($content,'<td><a>');

$content_data = strip_tags($content,'<td>');





$title = strstr($content_data,'class=\'box_f_name\' valign=\'middle\'>');

$title = strstr($title,'>');

$title = trim(substr($title,1,strpos($title,'</td>')-1));



$name = strstr($content_data,'class=\'box_f_info_01tdu\'>');

$name = strstr($name,'>');

$name = trim(substr($name,1,strpos($name,'</td>')-1));


$size = strstr($content_data,'class=\'box_f_info_02\'>');

$size = strstr($size,'>');

$size = trim(substr($size,1,strpos($size,'</td>')-1));


$date = strstr($content_data,'class=\'box_f_info_04\'>');

$date = strstr($date,'>');

$date = trim(substr($date,1,strpos($date,'</td>')-1));



$link = strstr($content_link,'onClick="Copy_Link');

$link = strstr($link,'\'');

$link = substr($link,1);

$link = trim(substr($link,0,strpos($link,'\'')-1));


$return['file_title']=mysql_escape_string($title);

$return['file_name']=mysql_escape_string($name);

$return['file_size']=mysql_escape_string($size);


$return['file_link']=mysql_escape_string($link);

$return['db_date']=mktime();


//data_creat_some("gogobox",$return); //最後將字串都整理好後,建立到資料庫去

//這邊就不把此FUNCTION寫出來了,可以用var_dump($return)看資料

//之後即可自行應用


}


}


===============引用先前====================
引用先前發的 "GOGOBOX 搜尋引擎"
以下是之前研究GOGOBOX的原由

GOGOBOX 搜尋引擎
想必有許多人都也有想過吧!!
當初FINDBOX出來的時候,可是為之驚人啊!!
每天流量都爆破!!顆顆
但是不知怎麼的後來就消失了
======題外話======
(知道的人還請跟我說說吧!THX!~)
只知道之後GOGOBOX有改版
檔案的下載位置好像都有改變的樣子(不太記得了)
所以FINDBOX就失效了??? (I REALLY DONT KNOW)
(或是被警察伯伯抓了???這樣有犯法嗎??)
這一值都是我現在的疑問 顆顆

不過現在好像又有很多人有架類似的站吧!!
顆顆~~這邊也是其中之一
======題外話======

所以就決定再來試做一個 GOGOBOX搜尋引擎
於是就花了許多時間在研究他的檔案位置
最後是有得出一些結論 :
第一個 GOGOBOX 每個會員都有編號
第二個 GOGOBOX 每個檔案也都有編號
第三個 GOGOBOX 每個檔案下載位置都有加上會員編號
第四個 不知道怎麼不列會員編號就下載到檔案
最後 GOGOBOX 必須要有會員編號 和檔案編號才能下載 (不知道對不對)

但是還有一個線索,就是他每個會員BOX裡面都可以搜尋到他所PO的所有檔案

結合以上幾點就用PHP寫出了一個搜尋器

因為不可能直接使用GOGOBOX的搜尋引擎,所以大概就是要像GOOGLE一樣
把檔案都先搜索過然後存到資料庫,使用者再直接搜尋這個資料庫
這樣速度才OK

SO...

目前今天花了一個下午,大概寫出了一些,已經可以廣搜GOGOBOX了
不過速度有點慢 == 十分鐘 約 幾千個檔案而已
(過了幾天,目前約四十萬筆吧!!)
一切還在測試中,...至於公開程式碼 大概會慢一點公開
ps 目前搜了兩萬五千筆左右 == 離全部還好遠好遠
===============引用END=====================


===============宣告====================
此篇內容僅供測試,如果有利用做不法行為,與本人無關
===============宣告====================

2009年9月12日星期六

PHP SMARTY樣板處理程式

PHP SMARTY樣板處理程式

轉自福球亂彈(其實也是我自己打的 = =")

這是一個很好用的外掛程式

安裝極為簡單

只要解壓縮後

把下面的資料夾複製到你的網站資料夾下面即可

接下來只要引用即可



==================================

SMARTY簡介

==================================

1.smarty是甚麼?

是一個樣板處理程式,他主要是方便管理HTML和PHP之間的聯繫關係,也有將HTML和PHP分開的功能,"以便使用者管理網站"。而且在實際使用上,程式碼會簡潔許多。

2.為什麼非要用smarty?

當然不一定要使用,不過你一用,就會愛上的。

smarty主要功能就是把PHP和HTML程式分開放,這樣就能使專門設計HTML美觀方面的人,和專門寫PHP程式的人可以方便分工合作,使事情處理上更有效率。

而且使用smarty,也可以大量減少網頁數量。

一個PHP => 一個樣板 = 同性質所有功能的兩個檔案就可以處理完

一個PHP => 少量樣板 = 一個中小型網站可處理完畢。

多個PHP => 少量樣板 = 大型網站(論壇、多樣的互動網站)

3.甚麼時候用到smarty?

測試性PHP程式基本上不會用到,但只要有"介面"出現,用就對了!!



==================================

簡單教學

==================================

一開始在先看一下

smarty資料夾下面有兩個php程式

main.PHP

smarty_php.php

這兩個是最一開始處理SMARTY的程序

main.php 算是最原始的

smarty_main.php 是本人稍稍改過的(建議使用,已排除JAVASCRIPT問題)

基本上就不需要動這個檔案了

我們開始使用SMARTY

在PHP程式上面先 require('smarty/smarty_main.php');

此時就已經算是建立一個樣版了(smarty_main.php)



PHP部分

<?php

require('smarty/smarty_main.php'); //路徑沒問題吧!! 已經建立摟

//接下來可以直接使用,由於引入檔開啟CLASS的建立是用 $tpl 所以之後都要用$tpl

//將字串傳到樣板,用assign

$tpl -> assign("trans_title","我是要給HTML顯示的抬頭");

$tpl -> assign("trans_body","我是要給HTML顯示內容");

//可以用很多次,意思是可以設定很多個變量(自己隨便設)



//接下來就可以展現樣版了,很EASY吧

$tpl -> display('tmp/test.html'); //路徑應該知道吧!!

?>





HTML樣板部分

<html>

<title>{{$trans_title}}</title>

<body>

{{$trans_body}}

</body>

</html>



這樣就可以了,php就會開啟此樣板,並把變量傳過來,然後顯示



最後的輸出結果(看到的)



網頁的標題就會是 "我是要給HTML顯示的抬頭"

內容只有 "我是要給HTML顯示內容"



最後的輸出結果(html)



<html>

<title>我是要給HTML顯示的抬頭</title>

<body>

我是要給HTML顯示內容

</body>

</html>



就是這樣,簡單吧!!

這樣就可以隨便把變數放在自己想要的地方

如果不用樣版的話,就必須在php裡面寫html,會變得很麻煩的喔!!



先這樣吧!! 以後再打稍為進階一點的 =="

smarty.rar (93.54 KB)

2009年9月3日星期四

PHP搶先看 直接下載YOUTUBE影片到電腦 可大量

PHP搶先看 直接下載YOUTUBE影片到電腦

==============================================
原始碼先只公布在論壇摟摟!! (為了推廣論壇 =="......包容一下麻)
福球論壇
程式碼觀看 >>直接下載YOUTUBE影片到電腦
先說聲抱歉摟!!

歡迎大家來討論喔!!

福球程式設計(PHP)


==============================================

最近因為某些YOUTUBE影片不能轉貼(必須進入YOUTUBE網站才能看)
而有一點不開心 =="

所以就搜尋許多YOUTUBE下載的軟體,發現還有蠻多缺點的
1.有些影片不能下載
(不能轉貼的好像都不能下載??,我只試了一個)
2.一次只能下載一個
(如果有一百個要下載,就要點一百次)(=="太麻煩,也許可能我用的軟體比較差)
3.有的要付錢

最後就想說 自己寫一個程式來下載YOUTUBE影片算了,說不定有人已經寫好了,顆顆
所以就GOOGLE找阿找的,只找到一些較差的方法(對我來說)
就是可以利用VIDEO_ID 和 T 來准許YOUTUBE讓使用者下載
輸入網址後,會跳出一個視窗,會要你另存新檔
但是還是遇到上面第二個問題,要一個一個點 (這樣不如不要寫程式了)

所以就繼續找阿找的,發現台灣網頁資訊真的有夠少 =="
就找到國外去了,就發現有很多人都有研究過這個問題
不過用他們的程式碼,不是不能用,就是還是有以上問題

最後還是只有到PHP官方網站研究 ==
終於融合以上資訊,寫出了 直接下載YOUTUBE影片到電腦

其實程式碼還蠻簡單的
主要是用CURL (PHP安裝的時候要記得啟用)
幾行而已,主要是字串處理吧!!

歡迎大家多多討論&使用&學習

==============================================
原始碼先不公布在這邊摟!! (為了推廣論壇 =="......包容一下麻)
福球論壇
程式碼觀看 >>直接下載YOUTUBE影片到電腦
先說聲抱歉摟!!

(也希望大家多多參與討論== ,還有點空曠請包含)
==============================================

2009年8月29日星期六

GOGOBOX 搜尋引擎

GOGOBOX 搜尋引擎

========================================
9/17
現在已經公布 "GOGOBOX搜尋引擎PHP程式碼" 摟!!

請到 福球亂彈 (方便討論喔!!)

GOGOBOX 搜尋引擎 PHP程式碼公開

或是

本BLOG (有意見或建議可留言喔!!)

GOGOBOX 搜尋引擎 PHP程式碼公開


觀看最新版本
========================================
9/1
剛剛把已經把搜到的GOGOBOX檔案部分上傳到免費空間了
(三十萬筆,因為空間不夠= =)
可以測試看看,不過此空間的廣告有點討厭 = ="
福球亂彈 => 福球程式設計(PHP) => PHP主題討論 => GOGOBOX搜尋引擎測試
順便廣告一下論壇 ==

歡迎大家來討論!!

========================================


最近和朋友想說要架一個論壇
主要是要放一些和興趣相關的內容
當然有程式設計的版面摟!!

福球亂彈 歡迎大家參觀,也歡迎一起經營喔(誠摯的邀請版主ING)!!
PHP版
(還在計畫中,請不要嫌棄)

再分配管理版面的時候,當然我就是負責"電腦"這方面的板塊~呵呵
但是想阿想的!
最重要的,還是要有主打的東西吧!!
這樣才有吸引人的地方。

再想阿想的,就想到了 GOGOBOX 搜尋引擎
想必有許多人都也有想過吧!!
當初FINDBOX出來的時候,可是為之驚人啊!!
每天流量都爆破!!顆顆
但是不知怎麼的後來就消失了
======題外話======
(知道的人還請跟我說說吧!THX!~)
只知道之後GOGOBOX有改版
檔案的下載位置好像都有改變的樣子(不太記得了)
所以FINDBOX就失效了??? (I REALLY DONT KNOW)
(或是被警察伯伯抓了???這樣有犯法嗎??)
這一值都是我現在的疑問 顆顆

不過現在好像又有很多人有架類似的站吧!!
顆顆~~這邊也是其中之一
======題外話======

所以就決定再來試做一個 GOGOBOX搜尋引擎
於是就花了許多時間在研究他的檔案位置
最後是有得出一些結論 :
第一個 GOGOBOX 每個會員都有編號
第二個 GOGOBOX 每個檔案也都有編號
第三個 GOGOBOX 每個檔案下載位置都有加上會員編號
第四個 不知道怎麼不列會員編號就下載到檔案
最後 GOGOBOX 必須要有會員編號 和檔案編號才能下載 (不知道對不對)

但是還有一個線索,就是他每個會員BOX裡面都可以搜尋到他所PO的所有檔案

結合以上幾點就用PHP寫出了一個搜尋器

因為不可能直接使用GOGOBOX的搜尋引擎,所以大概就是要像GOOGLE一樣
把檔案都先搜索過然後存到資料庫,使用者再直接搜尋這個資料庫
這樣速度才OK

SO...

目前今天花了一個下午,大概寫出了一些,已經可以廣搜GOGOBOX了
不過速度有點慢 == 十分鐘 約 幾千個檔案而已
(過了幾天,目前約四十萬筆吧!!)
一切還在測試中,...至於公開程式碼 大概會慢一點公開
ps 目前搜了兩萬五千筆左右 == 離全部還好遠好遠
(目前想辦法讓論壇人氣多一點,所以想讓此搜尋變成主打 顆顆 (作夢ing))
最後 歡迎大家來參觀福球亂彈

2009年8月22日星期六

PHP 自動更新進入yahoo 搶拍賣 PART II 新版

之後又寫了一個版本的


搶拍賣(日貨)用的程式,就是會固定幾秒就搜索一次賣家的帳號,只要最上面的連結改變(表示PO新貨)

馬上就會進去新的頁面
==============================================
使用方法

第一格式輸入YAHOO賣家的網址(清單瀏覽,新貨出現在最上面)

然後可以按送出試試看

下面會出現一行 就是目前最新的物品

如果不是出現現在最新的物品

可以在第二格輸入數字

從 0 開始 01234...

就是要列出目前最新的物品連結

OK之後就點 START 就會開始每X秒自動掃一次

在後面的 下面這行的5就是每五秒掃一次 可以自己改變

echo '<meta http-equiv="refresh" content="5; url=test.php">';

PS 不過此版本還是不能脫逃 YAHOO 999的命運
每五秒一次 大概十五分鐘就壽命終結 ==

目前努力研究逃脫YAHOO 999 的命運

歡迎一起討論^^

最新發現!!!

最近測試發現
用APACHE 傳送過多造成999
IE FIREFOX 還是可以正常瀏覽
因此這裡可能就是可以破解的地方!!

==============================================

<form name="form1" method="get" action="test.php">

<input type="text" name="url" id="textfield">

<input type="submit" name="button" id="button" value="送出">

<input name="num" type="text" id="num">

<input type="submit" name="star" id="star" value="star">

<input type="submit" name="stop" id="stop" value="stop">

</form>


<?php

session_start();


if(isset($_GET['url']) and @$_GET['url'] != ''){

$_SESSION['url']=$_GET['url'];

}

if(isset($_SESSION['url'])){

$url = $_SESSION['url'];

}else{

$url ="http://tw.user.bid.yahoo.com/tw/user/lainjp98?userID=lainjp98&catID=&catIDselect=&clf=&u=:lainjp98&s1=ptime&o1=d&at=false";

}

if(isset($_GET['num']) and @$_GET['num'] != ''){

$_SESSION['num']=$_GET['num'];

}

if(isset($_SESSION['num'])){

$next = $_SESSION['num'];

}else{

$next = 1;

}


$fp =fopen($url,"r");


$content = stream_get_contents($fp);

$content = str_replace('刊登時間','||',$content);

$content = strstr($content,'||');


$content = strip_tags($content,'<a>');

$content = substr($content,60);


$i=0;

//$next = 5;

while($content = strstr($content,'<')){

//$content = strstr($content,'<');

$pos = strpos($content,'>')+1;

$pos = strpos($content,'>',$pos)+1;

$content_link = substr($content,0,$pos);

$content = substr($content,$pos);

if($i==$next){

if(@$_SESSION['check'] ==1){

if($_SESSION['temp'] != $content_link){

$content_link = strstr($content_link,'"');

$content_link = substr($content_link,1);

$pos = strpos($content_link,'"');

$content_link = substr($content_link,0,$pos);

echo '<meta http-equiv="refresh" content="1; url='.$content_link.'">';

}



}

if(@$_GET['star'] =='star'){

$_SESSION['temp']=$content_link;

$_SESSION['check'] =1;

}


echo $content_link."<br>";


}

$i++;

}

if(@$_GET['stop'] =='stop'){

$_SESSION['check'] =0;


}

if(@$_SESSION['check'] ==1){

echo '<meta http-equiv="refresh" content="5; url=test.php">';


}

fclose($fp);

?>

2009年8月12日星期三

C++學習檔案 < 亂數列排大小+輸入值列出位置 >

C++學習檔案 < 亂數列排大小+輸入值列出位置 >


< 亂數列排大小+輸入值列出位置 >

#include <iomanip>

#include <iostream>

#include <time.h>

#include <stdlib.h>

using namespace std;

int main() {

srand(time(0));

int o[15],n[15],m=0,t;

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

o[i] = rand()%100;

n[i] = 0;

cout << setw(3) << o[i];

}

cout <<endl;

for(int j=0;j<15;j++){

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

if( o[i] > n[j]){

n[j] = o[i];

m=i;

}

}

o[m] =0;

cout << setw(3) << n[j];

}

cout <<endl<<"plz input integer value" << endl;

cin >> t;

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

if(n[i]==t){

cout << "integer " << n[i] << " was fount in site " << i+1 <<endl;

}

}

system("pause");

return 0;

}

C++學習檔案 < 河內塔>

C++學習檔案 < 河內塔 (1.FOR迴圈)+(2.遞迴) >

1. 河內塔 for迴圈寫法
(包含實體位置)(單陣列從零開始)

當三個的時候
陣列位置

2 | 5 | 8
1 | 4 | 7
0 | 3 | 6
---------
1 | 2 | 3 (塔)
---------
以此類推 (每行最後兩個)

心得:
物品123
柱子ABC
河內塔最簡單的原理就是
1->2->3->1->2->3.... 一直巡迴
每一次都判斷柱子a->b->c->a.....
(請看程式碼,有點亂= =)


#include <iomanip>

#include <iostream>

using namespace std;


int main() {

int b,n,t=0,p=1,j=0,n2,n3,sum=0;

cin >> n;


int *a = new int[n*3] ;



b=1;

for(int i=(n*3-1);i>=0;i--){

if(i<n)

a[i]=b++;



else

a[i]=0;

}


while(1){

n2=j%(n*3);

n3=t%(n*3);


//cout <<p <<n2<<a[n2]<<n3<<a[n3]<<endl;

if(p==a[n2]){

for(int k=0;k<n;k++){//判斷上面是否有東西

if(n2%n==k){

if(a[(j+1)%(n*3)] !=0){

//cout<<"b";

t=j;

p==n?p=1:p++;

}

}

}

}

if(p==a[n2]){

t=j;//暫存

//cout <<p <<endl;

// cout <<n2<<endl;

}

if((a[n3]==p &&a[n2]==0 && n2%n==0)||(a[n3]==p &&a[n2]==0 && n2%n!=0 && a[(j-1)%(n*3)] > p )){//移動+判斷

a[n2]=p;

a[n3]=0;

cout<<"item:"<<setw(3)<<p <<" from:"<<setw(3)<< n3/n+1<<" to:"<<setw(3)<<n2/n+1<<setw(5)<< n3<<setw(3)<<n2<<endl;

sum++;


}



if(n2 ==(t-1)%(n*3) ){

p==n?p=1:p++;//j=0;



}


j++;




if(a[(n*2-1)]==1 || a[(n*3-1)]==1)

break;



}

cout << "sum:" <<sum<<endl;

system("pause");



}




====================================
2. 河內塔 遞迴寫法

不包含位置


#include <iostream>

using namespace std;


void hanoi(int,char*,char*,char*);


int main()

{

cout << "input a number:";

int number;

cin >> number;


char p1[]="A";

char p2[]="B";

char p3[]="C";


hanoi(number,p1,p2,p3);

system("pause");

return 0;

}


void hanoi(int n,char* p1,char* p2,char* p3)

{

if(n==1){

cout << "no." << n << " from " << p1 << " to " << p3 << endl;

}else{

hanoi(n-1,p1,p3,p2);

cout << "no." << n << " from " << p1 << " to " << p3 << endl;

hanoi(n-1,p2,p1,p3);

}

}

C++學習檔案 <亂數數列並列出大小順序>

C++學習檔案 <亂數數列並列出大小順序>

EX

14 59 60 23
4 2 1 3




#include <iomanip>

#include <iostream>

#include <time.h>

#include <stdlib.h>


using namespace std;


int main() {

int n,max=0,maxo=0;

cin >> n;

int *s = new int[n] ;

srand ( time(NULL) );

for(int i=1;i<n;i++){

s[i] = rand () %100;

cout << setw(3)<<s[i] ;

}

cout << endl;

for(int k=1;k<n;k++){

int j=0; for( j=1;j<n;j++){

if(s[j]>max){

max = s[j];

maxo=j;

}

}

cout << setw(3) << maxo;

s[maxo]=0;

max=0;

}


system("pause");

return 0;

}

2009年8月9日星期日

C++學習檔案

C++學習檔案 n階


1*2*3*4*5*6...


#include
using namespace std;
int nn(int,int,int);
int main() {
int i=1,n,s=1;
cout << "輸入數:起始 和 結束"; cin >> i;
cin >> n;
cout << s =" s*i;">




======================

N階別種寫法

輸入起始值和結束值
EX
4
7
就是
4*5*6*7

#include <iostream>

using namespace std;

int nn(int,int,int);

int main() {

int i=1,n,s=1;

cout << "輸入數:起始 和 結束";

cin >> i;

cin >> n;

cout << nn(i,s,n) << endl;


system("pause");

return 0;

}



int nn(int i,int s,int n) {

if(n < i) {

return s;

}else{

s = s*i;

i++;

return nn(i,s,n);

}

}


==============================

N階遞迴寫法


#include <iostream>

using namespace std;

int nn(int,int,int);

int fun(int n);

int main() {

int i=1,n,s=1;

cout << "輸入數" << endl;



cin >> n;


cout << fun(n);

system("pause");

return 0;

}


int fun(int n){

if(n==1)

return 1;

else

return fun(n-1)*n;

}