/*ip轉化*/
for (int i = 7; i >= 0; i--)
for (int i = 15; i >= 8; i--)
for (int i = 23; i >= 16; i--)
for (int i = 31; i >= 24; i--)
//**轉化
for (int i = 0; i < num5[len]; i++)
for (int i = 0; i <= 31; i++)
for (int i = num5[len]; i < 32; i++)
//重新賦值
int ss = 0, sss = 128;
for (int i = ss; i <= ss + 7; i++)
ss += 8;
sss = 128;
for (int i = ss; i <= ss + 7; i++)
ss += 8;
sss = 128;
for (int i = ss; i <= ss + 7; i++)
ss += 8;
sss = 128;
for (int i = ss; i <= ss + 7; i++)
ip1[len] = 16777216 * num1[len] + 65536 * num2[len] + 256 * num3[len] + num4[len];
在此我是用的是先將127.0.0.1的**先轉化成二進位制,根據/x的x值對其處理之後再進行與運算,最後賦值計算即可
優點:無,但是符合定義
缺點:**量大
switch (ds1[len])
對協議號進行處理,由於無法(大概也是我不會),只能讓每一位進行乙個字元到整型的處理,然後再轉化
最後就是資料比較的問題,由於**實在太長,就不放了,最主要的就是ip位址的匹配,/32就是等於即可,/31就是等於兩個資料即可,其他的就是在乙個範圍內進行乙個判斷,所以第二種計算ip網寬的方法除了能減少計算量,判斷過程也能少寫一點(又是快一百行)
#include #include using namespace std;
int main()
len = 0;
ifstream fil("output.txt");
while ( ! fil.eof() )
int flag = 0;
len --;
for (int i = 0; i < len; i++)
} cout << flag ;
return 0;
}
然後就是這個check的**可以把結果和ans進行對比,**應該很簡單的,就不多介紹了,不過看著錯誤數從上千到173,然後到11,最後到0的成就還是不錯的
時間大概3秒乙個資料報,比較長了
首先了解基本概念,然後檔案的輸入和輸出,ip計算方法等等,寫**(第一版),協議號問題(第二版),傳輸協議問題(第三版),/31的bug(第四版也是最終版本)
1.模組化問題
我是沒有將所有的東西模組化的,事實上就只有乙個檔案,我感覺沒什麼必要,小工程的情況下,而且是單人,整個的**編寫過程我都沒有感覺演算法**出問題,除了輸入資料的處理很難受之外
2.**量問題
如果使用scanf,printf的話會減少很多的**。ip計算使用第二種方法的話也會再少很多。
3.main.c的問題
問就是我改不動了,建議直接開啟我檔案直接改。【滑稽】
我的github:
第二次寒假作業
終於把第二次寒假作業先交上來了,實在是太羞愧了。也不知道當初自己覺得兩周就能做完的信心是 來的 痛苦託腮 入門的python,入門的html,跟入門的flask 無滿滿的困難吧。剛開始的題意理解就用了很長的時間,花了兩三天去查名詞的意思,相關知識等,才對一些詞有了初步的認識,起碼不會連它是什麼都不知...
第二次寒假作業
這次作業屬於哪個課程 2020物件導向程式設計 福州大學 數學與電腦科學學院 這次作業的要求在 物件導向程式設計寒假作業2 作業目的 1.建立github倉庫,並上傳檔案 2.學習windows批處理 3.使用windows批處理編譯 相關鏈結 使用.gitignore 新建倉庫 首先在github...
第二次寒假作業
根據相應規則對資料報進行操作,現給出規則集及輸入資料報,輸出相應資料報最佳匹配的規則。迴圈從資料報中每讀入乙個組資料,就開始在規則集中搜尋,搜到就輸出,搜下乙個 搜尋採用迴圈讀入規則集,進行匹配 獨立每乙個模組 因規則集與資料報的資料表達不同,所以要進行轉化 main.cpp 主 put.cpp 輸...