작성
·
434
3
작성한 코드가 있는 폴더에서 run.sh 파일을 생성합니다. 해당 파일을 열어서 아래 내용을 붙여넣어줍니다.
실행할 cpp 파일 명은 code.cpp로 바꾸어주세요.
#!/bin/bash
g++ code.cpp -o code
"./code" "./test/in1.txt" "./test/result1.txt"
"./code" "./test/in2.txt" "./test/result2.txt"
"./code" "./test/in3.txt" "./test/result3.txt"
"./code" "./test/in4.txt" "./test/result4.txt"
"./code" "./test/in5.txt" "./test/result5.txt"
echo "test1 :" && diff -w -s "./test/result1.txt" "./test/out1.txt"&& echo " "
echo "test2 :" &&diff -w -s "./test/result2.txt" "./test/out2.txt"&& echo " "
echo "test3 :" &&diff -w -s "./test/result3.txt" "./test/out3.txt"&& echo " "
echo "test4 :" &&diff -w -s "./test/result4.txt" "./test/out4.txt"&& echo " "
echo "test5 :" &&diff -w -s "./test/result5.txt" "./test/out5.txt"&& echo " "
해당 폴더에 test폴더를 생성하여 채점 파일에 있는 파일들을 넣어줍니다.
메인의 코드를 살짝 수정해주어야 합니다.
code.cpp파일을 열어 아래와 같이 수정 해 줍니다.
int main(int argc, char* argv[]){
freopen(argv[1], "rt", stdin);
freopen(argv[2], "w", stdout);
main함수에 매개 변수를 입력할것이므로 인자를 넣어주고 결과 파일을 작성할 코드도 추가합니다.
cpp 파일이 있는 폴더에서 쉘 스크립트를 실행합니다.
$ sh run.sh
성공
내가 작성한 코드의 결과값과 채점파일의 답이 일치하면 identical이라는 문구가 뜹니다.
실패
틀린 답은 해당 번호에 코드 출력 결과값을 보여줍니다.
구분선 --- 위쪽은 내가 작성한 코드의 출력값, 아래는 채점 파일의 출력값입니다.
c++코드에서 시간 라이브러리를 넣어 측정할 수 있지만 귀찮아서 시간 측정은 잘 안했는데 리눅스 명령어로도 확인이 가능하네요.
#!/bin/bash
g++ code.cpp -o code
time "./code" "./test/in1.txt" "./test/result1.txt"
time "./code" "./test/in2.txt" "./test/result2.txt"
time "./code" "./test/in3.txt" "./test/result3.txt"
time "./code" "./test/in4.txt" "./test/result4.txt"
time "./code" "./test/in5.txt" "./test/result5.txt"
이렇게 실행 명령어 앞에 time 을 붙여주면 실행 시간을 출력해줍니다.
쉘 스크립트 문법을 몰라서 그냥 한줄 한줄 작성했는데 세련되어보이진 않지만 채점파일 추가,삭제는 직관적으로 가능하다는 장점이 있다고 우겨보겠슴다.
수정하고 싶은 부분은 간단한 검색으로도 많은 자료가 있으니 수정하셔서 사용하면 될 듯합니다.
궁금하거나 수정할 부분이 있다면 알려주세요.