演算法學習日記 撲克牌比較 and 子網掩碼對比
問題:子網掩碼格式為:255.255.255.0(11111111.11111111.11111111.00000000)
ip位址舉例為:192.168.0.254(11010000.10101000.00000000.11111110)
如果兩個ip位址與子網掩碼按位與的結果相同,那麼稱這兩個ip位址處於同一子網中
設計程式,判斷輸入的兩個ip位址是否處於同一子網中,如果是,輸出0,否則輸出2。格式錯誤輸出1。
兩個問題都沒什麼難度,但是要考慮很多情況。在寫程式過程中出現了很多問題
(1)細節不熟練,總是要除錯很久。
(2)c++的東西總是忘記
下面分別說說兩個程式中的教訓
1.撲克牌比較:想的演算法很複雜,總喜歡將所有的功能打包成為各種函式,不知道是好是壞…………
程式如下(c語言)
#include #include #include #include char weight_value[14]=;
int check_array_number(char *array) //得到的是真實字元的多少
return i;
}int compare(char *a,char *b)
for(j=0;j<14;j++)
if(i>j) return 1;
else return 0;
}int main(void)
else}}
}}
else
else
else}}
return 0;
}
2.子網掩碼對比:改用c++來寫所有的程式,主要教訓如下
(1)將字串轉換成int:定義乙個istringstream流,繫結要轉換的字串,然後將字串輸出至指定int型變數中,完成轉換
void ip_int(string code,int *code_i)
; int i=0,j=0;
for(i=0;i<4;i++)
j++;
}for(i=0;i<4;i++)
}
(2)string容器中也是以『\0』作為字串的結尾,因此cout時可以利用這一點。
(3)string.compare(string str)
string.empty
函式不要忘記!!
子網掩碼程式如下
#include #include //用istringstream要加上這個庫
#include #include using namespace std;
int check_ip(string code)
; int sybol_number=0;
int number=0;
int len=code.length();
int i=0,j=0;
for(i=0;i>number;
if(number>255) return 0;}}
return 1;
}}int check_mask(string mask)
; int sybol_number=0;
string subnet_code[4]=;
int len=mask.length();
int i=0,j=0;
for(i=0;i>code_i[i];
}}int checknetsegment(string mask,string ip1,string ip2)
,ip1_i[4]={},ip2_i[4]={};
ip_int(mask,mask_i);
ip_int(ip1,ip1_i);
ip_int(ip2,ip2_i);
if( c_1 && c_2 && c_m)
return 0;
}else
}int main()
{ string ip1;
string ip2;
string mask;
cin>>mask>>ip1>>ip2;
cout<
撲克牌邏輯演算法
using system using system.collections.generic namespace gamelogic 撲克牌牌值採用16進製制 byte pokerarray 獲取花色 public static byte getpokerhua byte ipoker 獲取牌值 滿足...
關於撲克牌的演算法
紅色標記的地方是我標註的乙個重點 實現乙個演算法 將一副54張撲克牌經過洗牌後順序發給三個人,然後將每個人的牌按降序排序。我們已經設計出了撲克牌類card 演算法類game,並且有了測試 main.cpp,但演算法類game中的洗牌函式shuffle 和發牌函式deal 沒有實現,請寫出具體的實現 ...
刷演算法 撲克牌順子
ll今天心情特別好,因為他去買了一副撲克牌,發現裡面居然有2個大王,2個小王 一副牌原本是54張 他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!紅心a,黑桃3,小王,大王,方片5 oh my god 不是順子.ll不高興了,他想了想,決定大小 ...