Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Компилятор Pascal
Показать сообщение отдельно

Аватара для P O M A

Старожил


Сообщения: 405
Благодарности: 25

Профиль | Отправить PM | Цитировать


Цитата pva:
Иногда неправильная программа может давать (при стечении обстоятельств) правильный результат. »
Тут не в этом дело.. По условию программа должна брать информацию из файла input.txt и записывать результат в output.txt, работая в консольном режиме (завершается сама, достигнув конца кода). Но, как оказалось, кроме меня никто такого не сделал (ввод через readln и вывод writeln, а при этом функционал сразу меняется - например, в одной задаче нужно было сравнить до 100 пар дробей), и жюри решило поменять условия проверки - 10 баллов вместо 100 за задачу, проверяют по готовым вопросам\ответам. А мою программу засчитали "неработающей" (не додумались посмотреть input\output...).
Задача: в первой строчке количество вопросов какого-то теста, во второй через пробел - 1\0 - правильный\неправильный ответ. В output.txt вывести в процентах количество правильных ответов. Условия: работа не более 2х секунд, не более 64х Мб ОЗУ, завершается нулём (halt (0) или достижением конца текста). Писать можно на C. Pascal (ABC, Turbo, Free), Java, Basic.
Вот код (доступа к оригиналу нет, но программа небольшая, все детали я помню):
читать дальше »
var a:real; var i,b:integer; var t1,t2:text; var c: array [1..100] of integer; begin; assign (t1, 'input.txt'); assign (t2, 'output.txt'); reset (t1); rewrite (t2); read (t1, b); a:=0; for i:=1 to b do begin read (t1, c[i]); a:=a+c[i]; end; a:=round((a/b)*100); write (t2, a); close (t1); close (t2); end.


Проблема в строчке write (t2, a), для Pascal ABC, в котором я работал, не нужно указывать формат вывода. Однако, как оказалось, программу (exe файл, который ABC не создаёт) должны проверять специальной программой-тестером (создаёт виртуальные input\output.txt, в input подставляет значения, сравнивает эталонные с результатом в output), однако тест оказался нерабочим (возможные решения теста: правильный\неправильный ответ, работает дольше 2х секунд, нет ввода в output.txt, НЕПРАВИЛЬНЫЙ ФОРМАТ ВЫВОДА, но тест работал минут 5, не выдав ни ошибки, ни результата). Если смотреть с моей стороны, то всё сделано правильно - в ABC программа работает (ответ целым числом), если со стороны проверяющих - сделанный в Turbo екзешник выводит ответ в неправильном формате. (....E+002).

В первом сообщении спутал F и A)) Число должно быть как раз целое. Нужно либо доказывать, что в разрешённой для работы ABC всё работало правильно, либо найти другой компилятор. Кстати, можно даже для Linux'а.

Отправлено: 10:47, 13-01-2010 | #3

Название темы: Компилятор Pascal