Re: [分享] ACM測資方便方法

看板C_and_CPP作者 (mat)時間12年前 (2011/09/01 17:33), 編輯推噓1(109)
留言10則, 3人參與, 最新討論串2/2 (看更多)
其實我最喜歡的方法是這樣子 因為 UVa 有提供 -DONLINE_JUDGE 的編譯選項 所以只要寫 int main() { #ifndef ONLINE_JUDGE freopen("100.in", "r",stdin); freopen("100.out","w",stdout) #endif // ...other code } 在本機測試就是用檔案I/O,送上去judge也不用修改任何一行code ※ 引述《diabloevagto (wi)》之銘言: : 昨天再跟朋友聊天剛好提到acm題目都如何測試 : 他講了一個方法挺不錯的 : 給大家參考看看 : 首先假設我編譯出來的exe檔是 : D:\Dropbox\C++\ACM\10141\bin\Debug\10141.exe : 然後要測試的資料都放在一個txt檔內 : D:\Dropbox\C++\ACM\10141\bin\Debug\aaa.txt : 這兩個檔案我放在同一個資料夾底下 : 因為我懶的打路徑 : 接著開cmd檔案下命令 : D:\Dropbox\C++\ACM\10141\bin\Debug>10141.exe < aaa.txt : 重點是在於那個< : 這觀念我猜應該是資料流的意思 : 給大家參考看看吧 : 在檔案內一樣是用cin : 這樣就不用一個一個key進去 : 也不需要用讀檔的方式了 -- 「人生有很多個十年,但如果剛好是十八歲到二十八歲,那就是一輩子了。」 「我們常常高估十年後能做的事,卻忽略一年內能做的事」 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.105.118 ※ 編輯: chchwy 來自: 114.45.105.118 (09/01 17:37)

09/01 17:55, , 1F
我之後是一樣用ifdef不過後面加的是WIN32
09/01 17:55, 1F

09/01 17:55, , 2F
我改成ONLINE_JUDGE的話,要在編譯那在多加東西吧?
09/01 17:55, 2F

09/01 18:02, , 3F
我弄成功了!我會用WIN32是因為我自己用win,uva是
09/01 18:02, 3F

09/01 18:02, , 4F
LINUX!
09/01 18:02, 4F
我這樣寫就是不用設定也不用檢查,而且Win,Linux通吃阿 你去看UVa的送題頁面就有寫明編譯參數 C++ 4.1.2 - GNU C++ Compiler with options: -lm -lcrypt -O2 -pipe -DONLINE_JUDGE 仔細看,我用的是#ifndef 不是 #ifdef 只要被包在#ifndef ONLINE_JUDGE裡面的程式碼 送交的時候就不會被編進去 ※ 編輯: chchwy 來自: 114.45.105.118 (09/01 18:30)

09/01 18:42, , 5F
真的耶...我看錯了,請問為什麼加上-DONLINE_JUDGE
09/01 18:42, 5F

09/01 18:42, , 6F
就可以用這個方法啊?兩個差了一個D
09/01 18:42, 6F

09/01 18:44, , 7F
-DONLINE_JUDGE 類似在程式裡加上 #define ONLINE_JUDGE
09/01 18:44, 7F

09/01 18:45, , 8F
所以可以用 #ifndef(if NO define) ONLINE_JUDGE 來控制
09/01 18:45, 8F

09/01 18:46, , 9F
了解,感謝喔
09/01 18:46, 9F

09/04 02:59, , 10F
推這篇
09/04 02:59, 10F
文章代碼(AID): #1ENr5JEB (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1ENr5JEB (C_and_CPP)