csdn帖子:http://***munity.csdn.***/expert/topic/3839/3839240.xml?temp=.607937
7.程式設計:貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒。(c#語言)
要求:1.要有聯動性,老鼠和主人的行為是被動的。
2.考慮可擴充套件性,貓的叫聲可能引起其他聯動效應
大部分答案都是使用的事件程式設計,我這裡換了一下思路,使用觀察著模式,用介面也實現了,因為考慮到第二個要求,即貓大叫也可能直接導致主人驚醒,所以man也繼承了icatcatcher介面
源**如下:
using
system;
using
system.collections;
namespace
test
public
inte***ce
icatsubject
public
inte***ce
iratsubject
public
inte***ce
iratcatcher
public
class
cat:icatsubject
private
arraylist catcherlist =
newarraylist();
public
void
regesitercatcatcher(icatcatcher catcher)
public
void
miao()
}[stathread]
public
static
void
main
()
man man =
newman(rat,cat);
cat.miao();}}
public
class
rat:icatcatcher,iratsubject
public
void
dosth()
private
arraylist ratcherlist =
newarraylist();
public
void
regesiterratcatcher(iratcatcher catcher)
public
void
run()}}
public
class
man:icatcatcher,iratcatcher
catsub.regesitercatcatcher(
this);}
public
void
dosth()
public
void
wake()}}
這裡如果除錯會出現一點點小問題,就是老鼠有很多,每個老鼠的run都會wake一下man,所以感覺是主人被多次驚醒,其實這只是因為計算機總是按照順序來執行程式的,能夠模擬到這種效果應該已經算符合題意了
這裡如果除錯會出現一點點小問題,就是老鼠有很多,每個老鼠的run都會wake一下man,所以感覺是主人被多次驚醒,其實這只是因為計算機總是按照順序來執行程式的,能夠模擬到這種效果應該已經算符合題意了
一道關於老鼠繁衍的演算法題
大海 的一座孤島,上面本來沒有老鼠。有一艘路過的船隻在附近沉沒了,船上 x 對 新出生的老鼠,順著船隻殘骸漂流到小島上。1.每兩個月一次生產,每次出生 2對 老鼠 2.老鼠的壽命是 5個月,也就是說一輩子可以生產 2次 3.這個島上,每個月因為神祕原因,假如存在 3個月大的老鼠,會死去一對 問 n個...
一道演算法題
兩個燒杯,一個放糖一個放鹽,用勺子舀一勺糖到鹽,攪拌均勻,然後舀一勺混合 物會放糖的燒杯,問你兩個燒杯哪個雜質多?一樣多吧 對的 為啥?是不是因為 糖和鹽本來就是均勻的 因為,就算不攪拌均,你放一勺過去,那邊放一勺不含雜質的過來,那麼都是一勺雜之 如果攪拌均勻的話也是一樣 小依 21 45 32 也...
一道演算法題
include using namespace std const int size 5 int max sub array const int a,int n,int m int max matrix const int a size int row,int col,int subsize int...
一道oracle試題
做不出來時感覺好難啊,思路千千萬,就是沒想到用 order by 和 rownum 題目如下 有下面三個表 商品product 商品號productid,商品名productname,單價unitprice,商品類別category,商provider 顧客customer 顧客號customeri...
一道筆試題
看到一道筆試題,跟自己想的有點出入,就跑了下,看了看原因。我稍微改了下 include int main int argc,char argv 輸出結果 c 5 d 245 press any key to continue vc6.0 debug下的彙編 5 unsigned char a 0xa...