|
|
|
|
module CodeExample
|
|
|
|
|
extend ActiveSupport::Concern
|
|
|
|
|
|
|
|
|
|
#老师C语言的标准代码
|
|
|
|
|
def c_stantard_code_teacher
|
|
|
|
|
"// 老师您好!这是一个C语言的样例程序
|
|
|
|
|
// 程序功能:输入两个整数,输出两者之和
|
|
|
|
|
// 测试集合:老师可以给出多组测试集,例如:
|
|
|
|
|
// 输入1和2,输出3
|
|
|
|
|
// 输入3和4,输出7
|
|
|
|
|
// ... ...
|
|
|
|
|
// 系统将根据您给出的测试集对学生代码进行自动评分
|
|
|
|
|
|
|
|
|
|
// 特别提醒:程序采用命令行传参方式,输入通过argv传入
|
|
|
|
|
// 否则您的作业标准代码将不能通过测试
|
|
|
|
|
|
|
|
|
|
#include <stdio.h> //引用必须头文件
|
|
|
|
|
int main(int argc, char** argv) {
|
|
|
|
|
int a = atoi(argv[1]); //将第一个输入转成整型
|
|
|
|
|
int b = atoi(argv[2]); //将第二个输入转换为整型
|
|
|
|
|
|
|
|
|
|
printf(\"%d\",a+b); //输出a+b
|
|
|
|
|
return 0;
|
|
|
|
|
}".html_safe
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
#老师C++语言的标准代码
|
|
|
|
|
def c_stantard_code_teacher_
|
|
|
|
|
"// 老师您好!这是一个C++语言的样例程序
|
|
|
|
|
// 程序功能:输入两个整数,输出两者之和
|
|
|
|
|
// 测试集合:老师可以给出多组测试集,例如:
|
|
|
|
|
// 输入1和2,输出3
|
|
|
|
|
// 输入3和4,输出7
|
|
|
|
|
// ... ...
|
|
|
|
|
// 系统将根据您给出的测试集对学生代码进行自动评分
|
|
|
|
|
|
|
|
|
|
// 特别提醒:程序采用命令行传参方式,输入通过argv传入
|
|
|
|
|
// 否则您的作业标准代码将不能通过测试
|
|
|
|
|
|
|
|
|
|
#include <iostream> //引用必须头文件
|
|
|
|
|
#include <cstdlib>
|
|
|
|
|
using namespace std;
|
|
|
|
|
int main(int argc, char** argv){
|
|
|
|
|
int a = atoi(argv[1]); //将第一个输入转成整型
|
|
|
|
|
int b = atoi(argv[2]); //将第二个输入转换为整型
|
|
|
|
|
cout<<a+b; //输出a+b
|
|
|
|
|
return 0;
|
|
|
|
|
}".html_safe
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
#学生C语言的标准代码
|
|
|
|
|
def c_stantard_code_student
|
|
|
|
|
"// 同学好!这是一个C语言的样例程序
|
|
|
|
|
// 程序功能:输入两个整数,输出两者之和
|
|
|
|
|
// 测试集合:老师可以给出多组测试集,例如:
|
|
|
|
|
// 输入1和2,输出3
|
|
|
|
|
// 输入3和4,输出7
|
|
|
|
|
// ... ...
|
|
|
|
|
// 系统将根据您给出的测试集对学生代码进行自动评分
|
|
|
|
|
|
|
|
|
|
// 特别提醒:程序采用命令行传参方式,输入通过argv传入
|
|
|
|
|
// 否则您的作业标准代码将不能通过测试
|
|
|
|
|
|
|
|
|
|
#include <stdio.h> //引用必须头文件
|
|
|
|
|
int main(int argc, char** argv) {
|
|
|
|
|
int a = atoi(argv[1]); //将第一个输入转成整型
|
|
|
|
|
int b = atoi(argv[2]); //将第二个输入转换为整型
|
|
|
|
|
|
|
|
|
|
printf(\"%d\",a+b); //输出a+b
|
|
|
|
|
return 0;
|
|
|
|
|
}".html_safe
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
#学生C++语言的标准代码
|
|
|
|
|
def c_stantard_code_student_
|
|
|
|
|
"// 同学好!这是一个C++语言的样例程序
|
|
|
|
|
// 程序功能:输入两个整数,输出两者之和
|
|
|
|
|
// 测试集合:老师可以给出多组测试集,例如:
|
|
|
|
|
// 输入1和2,输出3
|
|
|
|
|
// 输入3和4,输出7
|
|
|
|
|
// ... ...
|
|
|
|
|
// 系统将根据您给出的测试集对学生代码进行自动评分
|
|
|
|
|
|
|
|
|
|
// 特别提醒:程序采用命令行传参方式,输入通过argv传入
|
|
|
|
|
// 否则您的作业标准代码将不能通过测试
|
|
|
|
|
|
|
|
|
|
#include <iostream> //引用必须头文件
|
|
|
|
|
#include <cstdlib>
|
|
|
|
|
using namespace std;
|
|
|
|
|
int main(int argc, char** argv){
|
|
|
|
|
int a = atoi(argv[1]); //将第一个输入转成整型
|
|
|
|
|
int b = atoi(argv[2]); //将第二个输入转换为整型
|
|
|
|
|
cout<<a+b; //输出a+b
|
|
|
|
|
return 0;
|
|
|
|
|
}".html_safe
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def compile_command
|
|
|
|
|
"compile(){
|
|
|
|
|
# 编译命令
|
|
|
|
|
compileCommand=\"COMPILECOMMAND\"
|
|
|
|
|
# 取当前关卡的编译文件
|
|
|
|
|
challengeProgramName=${challengeProgramNames[$1 - 1]}
|
|
|
|
|
# 获取编译结果(此处编译无输出则说明编译通过,否则输出编译错误信息,请按实训实际情况调整)
|
|
|
|
|
compileResult=$($compileCommand $challengeProgramName 2>&1 | base64)
|
|
|
|
|
if [ -z \"$compileResult\" ]; then
|
|
|
|
|
compileResult=$(echo -n \"compile successfully\" | base64)
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
compile $1"
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def execute_command
|
|
|
|
|
"execute(){
|
|
|
|
|
#执行命令
|
|
|
|
|
executeCommand=\"EXECUTECOMMAND\"
|
|
|
|
|
#执行文件名
|
|
|
|
|
sourceClassName=${sourceClassNames[$1 - 1]}
|
|
|
|
|
challengeStage=$1
|
|
|
|
|
|
|
|
|
|
output=''
|
|
|
|
|
i=0
|
|
|
|
|
while [[ i -lt ${#ins[*]} ]]; do
|
|
|
|
|
#执行,并拼接执行结果
|
|
|
|
|
result=$(echo \"${ins[$i]}\" | base64 -d | $executeCommand $sourceClassName 2>&1 | base64)
|
|
|
|
|
#拼接输出结果
|
|
|
|
|
output=$output\\\"$result\\\",
|
|
|
|
|
let i++
|
|
|
|
|
done
|
|
|
|
|
output=\"[${output%?}]\"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
execute $1
|
|
|
|
|
"
|
|
|
|
|
end
|
|
|
|
|
end
|