Add dist
This commit is contained in:
parent
7393b9b49a
commit
896c925c11
19 changed files with 1102 additions and 0 deletions
159
2025.05.09/tests/test.sh
Executable file
159
2025.05.09/tests/test.sh
Executable file
|
@ -0,0 +1,159 @@
|
|||
#!/bin/bash
|
||||
|
||||
chmod +x *.out
|
||||
|
||||
# Очищаем файл результатов
|
||||
> res.txt
|
||||
|
||||
# Функция для вывода разделителя
|
||||
print_separator() {
|
||||
echo "=================" >> res.txt
|
||||
}
|
||||
|
||||
# Функция для форматированного вывода входных данных
|
||||
format_input() {
|
||||
local task_num=$1
|
||||
local line=($2)
|
||||
|
||||
case $task_num in
|
||||
1|2|3)
|
||||
echo "x=${line[0]} h=${line[1]} k=${line[2]}" >> res.txt
|
||||
;;
|
||||
4|5|6|7)
|
||||
echo "a=${line[0]} b=${line[1]} n=${line[2]} k=${line[3]}" >> res.txt
|
||||
;;
|
||||
8|9)
|
||||
echo "a=${line[0]} b=${line[1]} e=${line[2]} k=${line[3]}" >> res.txt
|
||||
;;
|
||||
10|11)
|
||||
echo "a=${line[0]} e=${line[1]} k=${line[2]}" >> res.txt
|
||||
;;
|
||||
12)
|
||||
echo "a=${line[0]} b=${line[1]} e=${line[2]} k1=${line[3]} k2=${line[4]}" >> res.txt
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Функция для запуска теста с обработкой ошибок
|
||||
run_test() {
|
||||
local task_num=$1
|
||||
local line=$2
|
||||
local binary="./a$(printf "%02d" $task_num).out"
|
||||
|
||||
# Проверяем существование исполняемого файла
|
||||
if [ ! -f "$binary" ]; then
|
||||
echo "Исполняемый файл $binary не найден!" >> res.txt
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Запускаем программу и перехватываем ошибки
|
||||
output=$(timeout 100s $binary $line 2>&1)
|
||||
status=$?
|
||||
|
||||
case $status in
|
||||
0)
|
||||
# Успешное выполнение
|
||||
echo "$output" >> res.txt
|
||||
;;
|
||||
136)
|
||||
# Ошибка SEGFAULT (SIGSEGV)
|
||||
format_input $task_num "$line"
|
||||
echo "ОШИБКА: SEGFAULT (нарушение сегментации)" >> res.txt
|
||||
;;
|
||||
136|139)
|
||||
# Ошибка SEGFAULT (SIGSEGV)
|
||||
format_input $task_num "$line"
|
||||
echo "ОШИБКА: SEGFAULT (нарушение сегментации)" >> res.txt
|
||||
;;
|
||||
8|136|137|139)
|
||||
# FPE (SIGFPE) или другие сигналы
|
||||
format_input $task_num "$line"
|
||||
echo "ОШИБКА: FPE (ошибка вычисления с плавающей точкой)" >> res.txt
|
||||
;;
|
||||
124)
|
||||
# Таймаут
|
||||
format_input $task_num "$line"
|
||||
echo "ОШИБКА: Таймаут выполнения (программа зависла)" >> res.txt
|
||||
;;
|
||||
*)
|
||||
# Другие ошибки
|
||||
format_input $task_num "$line"
|
||||
echo "ОШИБКА: Программа завершилась с кодом $status" >> res.txt
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Запуск тестов для задач 1-3
|
||||
for i in {1..3}; do
|
||||
print_separator
|
||||
echo "=== TASK $i ===" >> res.txt
|
||||
print_separator
|
||||
|
||||
while read -r line || [[ -n "$line" ]]; do
|
||||
[ -z "$line" ] && continue # Пропускаем пустые строки
|
||||
format_input $i "$line"
|
||||
run_test $i "$line"
|
||||
echo "" >> res.txt # Добавляем пустую строку между тестами
|
||||
done < tests1-3.txt
|
||||
|
||||
echo "" >> res.txt # Добавляем пустую строку между задачами
|
||||
done
|
||||
|
||||
# Запуск тестов для задач 4-7
|
||||
for i in {4..7}; do
|
||||
print_separator
|
||||
echo "=== TASK $i ===" >> res.txt
|
||||
print_separator
|
||||
|
||||
while read -r line || [[ -n "$line" ]]; do
|
||||
[ -z "$line" ] && continue
|
||||
format_input $i "$line"
|
||||
run_test $i "$line"
|
||||
echo "" >> res.txt
|
||||
done < tests4-7.txt
|
||||
|
||||
echo "" >> res.txt
|
||||
done
|
||||
|
||||
# Запуск тестов для задач 8-9
|
||||
for i in {8..9}; do
|
||||
print_separator
|
||||
echo "=== TASK $i ===" >> res.txt
|
||||
print_separator
|
||||
|
||||
while read -r line || [[ -n "$line" ]]; do
|
||||
[ -z "$line" ] && continue
|
||||
format_input $i "$line"
|
||||
run_test $i "$line"
|
||||
echo "" >> res.txt
|
||||
done < tests8-9.txt
|
||||
|
||||
echo "" >> res.txt
|
||||
done
|
||||
|
||||
# Запуск тестов для задач 10-11
|
||||
for i in {10..11}; do
|
||||
print_separator
|
||||
echo "=== TASK $i ===" >> res.txt
|
||||
print_separator
|
||||
|
||||
while read -r line || [[ -n "$line" ]]; do
|
||||
[ -z "$line" ] && continue
|
||||
format_input $i "$line"
|
||||
run_test $i "$line"
|
||||
echo "" >> res.txt
|
||||
done < tests10-11.txt
|
||||
|
||||
echo "" >> res.txt
|
||||
done
|
||||
|
||||
# Запуск тестов для задачи 12
|
||||
print_separator
|
||||
echo "=== TASK 12 ===" >> res.txt
|
||||
print_separator
|
||||
while read -r line || [[ -n "$line" ]]; do
|
||||
[ -z "$line" ] && continue
|
||||
format_input 12 "$line"
|
||||
run_test 12 "$line"
|
||||
echo "" >> res.txt
|
||||
done < tests12.txt
|
Loading…
Add table
Add a link
Reference in a new issue