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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Компилятор Pascal

Ответить
Настройки темы
Delphi - Компилятор Pascal

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

Старожил


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


Конфигурация

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


Нужен компилятор паскаля. Главное (и, в общем, единственное) требование - вывод информации в таком виде, как, например, в Pascal ABC (он компилирует, но не создаёт бинарник на диске): переменная типа real содержит число 50, и на вывод тоже идёт 50. Однако такие компиляторы, как Turbo Pascal и Free Pascal выдают информацию в виде 1.000000000000000E+002.

Сейчас строка программы выглядит вот так: a:=round((f/b)*100), затем идёт вывод переменной a в файл - write (t2, a); Конечно, проще сделать эту строчку в виде write (t2, a:3:0); . Однако эта программа - олимпиадное задание, так что сейчас уже ничего не исправить Нужно найти такой компилятор, чтобы подать апелляцию - будет 100% доказательство работы программы. (Писал и проверял в ABC, не виноват же что проверяли (точнее вообще не проверяли, но это не по теме...) в Turbo, да и особые условия (проверяют исходник или бинарник и т.д.) не были указаны, разрешалось писать и в Abc, и Turbo, и Free)

Отправлено: 14:36, 11-01-2010

 
pva pva вне форума

Аватара для pva

Ветеран


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

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


Цитата P O M A:
(он компилирует, но не создаёт бинарник на диске): »
Я где-то у делфи видел опцию "бинарник в памяти". Но не пойму пока, насколько это принципиально.
Чему равны f и b и каких они типов? Какое надо было вывести число (целое, дробное)? 1.000000000000000E+002=100, а не 50
Цитата P O M A:
точнее вообще не проверяли, но это не по теме...) »
Иногда неправильная программа может давать (при стечении обстоятельств) правильный результат. Причём по опыту скажу бывает стабильно работает, потом рушится. Находишь ошибку и тихо считаешь себя идиотом... Давайте разберём алгоритм? если действительно не к чему придраться, можно гордо идти против комиссии.

Отправлено: 23:23, 11-01-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Компилятор Pascal

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Всё о TURBO PASCAL (обсуждение, помощь в написание программ, ошибки, Pascal ABC) Loading Программирование и базы данных 41 20-05-2015 15:28
компилятор Guest Общий по Linux 7 04-03-2004 21:57
Компилятор Interceptor Программирование и базы данных 2 04-10-2003 14:18
компилятор dzekka Программное обеспечение Linux и FreeBSD 7 09-07-2003 05:00
Компилятор для Pascal JCooper Программирование и базы данных 4 02-08-2002 13:41




 
Переход