# CP2023 作業與考試規則 This is the Traditional Chinese Version, click [here](https://hackmd.io/@cp2023/en-rule) for English Version. 如果中英文規則有異,以中文版本為準 [TOC] ### 更新紀錄 - 2023/09/22: 規則釋出 ## 批改機器規格 建議大家在交作業前在 `Ubuntu` 上測試一次自己的程式。我們不接受因作業系統不同導致的錯誤。 ## 程式執行流程 > 你的程式是怎麼被執行的? 第一步,助教會拿到一個 `XXX.zip` 壓縮檔,檔名可自訂。 ```sh ❯ ls -1 XXX.zip ``` 第二步,助教會執行 `unzip` 來解壓縮: ```sh ❯ unzip XXX.zip Archive: XXX.zip inflating: hw0101.c inflating: hw0102.c inflating: hw0103.c inflating: hw0104.c inflating: hw0105.c inflating: README.pdf inflating: hw0106.pdf inflating: Makefile ``` ```sh ❯ ls -1 Makefile README.pdf XXX.zip hw0101.c hw0102.c hw0103.c hw0104.c hw0105.c hw0106.pdf ``` > 此時可以看到檔案都被解壓縮出來了(位於原壓縮檔同目錄下) 第三步,助教會執行 `make` 來編譯你的程式: > 若此步驟出現編譯錯誤,請參閱 [Makefile 規則](#Makefile-%E8%A6%8F%E5%89%87) ```sh ❯ make gcc hw0101.c -o hw0101 gcc hw0102.c -o hw0102 gcc hw0103.c -o hw0103 gcc hw0104.c -o hw0104 gcc hw0105.c -o hw0105 ``` ```sh ❯ ls -1 Makefile README.pdf XXX.zip hw0101 hw0101.c hw0102 hw0102.c hw0103 hw0103.c hw0104 hw0104.c hw0105 hw0105.c hw0106.pdf ``` > 此時可以看到執行檔皆已被編譯(位於同目錄下) 第四步,助教將獨立執行你的不同程式,並與你的程式互動、進行評分測試 ```sh ❯ ./hw0101 Who is the professor? I dont know Wrong, Neokent is the professor. ``` > 此例中,助教輸入「`I dont know`」 第五步,助教會使用基於 Chromium 的瀏覽器或文字編輯器來閱讀你的非程式作業(PDF 或純文字文件)並進行評分。 第六步,助教會喝杯奶茶,放鬆心情,讓自己處於能公正進行最終評分的狀態。 第七步,對於你在 README 特別說明的 unspecified behavior 進行評分修正。 第八步,完成評分。 :::spoiler 壓縮的方法可以參考此處 ```sh ❯ zip XXX *.c *.pdf Makefile adding: hw0101.c (deflated 52%) adding: hw0102.c (deflated 71%) adding: hw0103.c (deflated 62%) adding: hw0104.c (deflated 85%) adding: hw0105.c (deflated 81%) adding: README.pdf (deflated 39%) adding: hw0106.pdf (deflated 26%) adding: Makefile (deflated 57%) ``` ::: :::spoiler `助教.sh` 你可以在放有你的壓縮檔的目錄執行看看,它會嘗試執行第二步至第四步。 ```sh #!/bin/bash set -x unzip *.zip make for file in *; do if [[ -x "$file" && -f "$file" ]]; then ./"$file" || true fi done ``` ::: ## Makefile 規則 在繳交前,請務必使用 `make` 指令確認編譯可以通過。 若無法編譯通過,未成功編譯的題目全部會以 0 分計算。 但身為佛心的助教,我們訂定了新手保護機制: - CSU0001 程式設計(一) 1. `hw1`: 該次總分扣 10 分,當作助教幫你改 Makefile 的工本處理費 2. `mid` 以前(含 `mid`): 每個未成功編譯的題目得分乘以 0.7,當作助教幫你改 Makefile 的工本處理費 3. 過了 `mid`: 每個未成功編譯的題目以 0 分計算 - CSU0002 程式設計(二) 1. `hw1`: 每個未成功編譯的題目得分乘以 0.5 2. 過了 `hw1`: 每個未成功編譯的題目以 0 分計算 ## 不可要分的項目 1. 因作業系統不同導致的錯誤,請在 `Ubuntu` 自己先跑一次程式。 2. Makefile 問題。 3. 使用了不符的檔案格式,像是曾經有人交過 `hw0101.docx`。 4. 交錯檔案。 5. 檔案命名錯誤(ex: 把 `hw0101` 命名成 `hw101`)。 6. 因為 Segmentation Fault 等不正常結束程式的情況。 7. 因為執行時間過久(無窮迴圈)導致程式無法在 10 秒內結束。 8. 補充說明文件請在每次寫作業時記得看,會以文件內容最終規定。 ## 可以要分的項目 請先確認輸入測資後發現答案是正確的,再檢查是否符合以下條件之一: 1. 少/多空白 2. 英文大小寫錯誤 3. 前面都沒發生,但答案是對的 **但若該題有特別註明,以該題為準**
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up