看板 C_and_CPP 關於我們 聯絡資訊
其實我最喜歡的方法是這樣子 因為 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)
diabloevagto:我之後是一樣用ifdef不過後面加的是WIN32 09/01 17:55
diabloevagto:我改成ONLINE_JUDGE的話,要在編譯那在多加東西吧? 09/01 17:55
diabloevagto:我弄成功了!我會用WIN32是因為我自己用win,uva是 09/01 18:02
diabloevagto:LINUX! 09/01 18:02
我這樣寫就是不用設定也不用檢查,而且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)
diabloevagto:真的耶...我看錯了,請問為什麼加上-DONLINE_JUDGE 09/01 18:42
diabloevagto:就可以用這個方法啊?兩個差了一個D 09/01 18:42
james732:-DONLINE_JUDGE 類似在程式裡加上 #define ONLINE_JUDGE 09/01 18:44
james732:所以可以用 #ifndef(if NO define) ONLINE_JUDGE 來控制 09/01 18:45
diabloevagto:了解,感謝喔 09/01 18:46
walker2009:推這篇 09/04 02:59