2017-03-08 00:30:47 +03:00
|
|
|
|
/// Модуль электронного задачника PT for Exam
|
2015-05-14 22:35:07 +03:00
|
|
|
|
unit PT4Exam;
|
|
|
|
|
|
|
2019-03-08 19:27:10 +03:00
|
|
|
|
|
2015-05-14 22:35:07 +03:00
|
|
|
|
//------------------------------------------------------------------------------
|
2015-12-28 14:25:15 +03:00
|
|
|
|
// Модуль для подключения задачника PT for Exam
|
2021-11-02 11:52:53 +03:00
|
|
|
|
// Версия 2.4
|
|
|
|
|
|
// Новое в версии: используется только стандартный вывод,
|
|
|
|
|
|
// для ввода требуется организовать чтение из файла в самой учебной программе
|
|
|
|
|
|
// Copyright © 2014-2021 М.Э.Абрамян
|
2015-05-14 22:35:07 +03:00
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
2021-11-02 11:52:53 +03:00
|
|
|
|
/// Обеспечивает инициализацию задания
|
2015-05-14 22:35:07 +03:00
|
|
|
|
procedure Task(name: string);
|
2021-11-02 11:52:53 +03:00
|
|
|
|
|
2015-05-14 22:35:07 +03:00
|
|
|
|
procedure FinExam;
|
|
|
|
|
|
|
2021-11-02 11:52:53 +03:00
|
|
|
|
/// Возвращает введенное значение типа string
|
|
|
|
|
|
function ReadString: string;
|
|
|
|
|
|
|
2019-03-08 19:27:10 +03:00
|
|
|
|
/// Выводит строку S в разделе отладки окна задачника
|
|
|
|
|
|
procedure Show(S: string);
|
|
|
|
|
|
|
|
|
|
|
|
/// Выводит набор данных в разделе отладки окна задачника.
|
|
|
|
|
|
/// Вещественные числа выводятся в формате, настроенном
|
|
|
|
|
|
/// с помощью функции SetPrecision (по умолчанию 2 дробных знака).
|
|
|
|
|
|
/// Если аргументом является последовательность, то после вывода
|
|
|
|
|
|
/// ее элементов выполняется автоматический переход на новую строку.
|
|
|
|
|
|
procedure Show(params args: array of object);
|
|
|
|
|
|
|
|
|
|
|
|
/// Выполняет переход на новую экранную строку
|
|
|
|
|
|
/// в разделе отладки окна задачника
|
|
|
|
|
|
procedure ShowLine;
|
|
|
|
|
|
|
|
|
|
|
|
/// Выводит набор данных в разделе отладки окна задачника,
|
|
|
|
|
|
/// после чего выполняет переход на новую экранную строку.
|
|
|
|
|
|
/// Вещественные числа выводятся в формате, настроенном
|
|
|
|
|
|
/// с помощью функции SetPrecision (по умолчанию 2 дробных знака).
|
|
|
|
|
|
/// Если аргументом является последовательность, то после вывода
|
|
|
|
|
|
/// ее элементов выполняется автоматический переход на новую строку.
|
|
|
|
|
|
procedure ShowLine(params args: array of object);
|
|
|
|
|
|
|
|
|
|
|
|
/// Задает ширину W области вывода для числовых и строковых данных
|
|
|
|
|
|
/// в разделе отладки. Влияет на последующие вызовы функций
|
|
|
|
|
|
/// Show и ShowLine.
|
|
|
|
|
|
procedure SetWidth(W: Integer);
|
|
|
|
|
|
|
|
|
|
|
|
/// Настраивает формат вывода вещественных чисел в разделе отладки
|
|
|
|
|
|
/// окна задачника. Если N > 0, то число выводится в формате
|
|
|
|
|
|
/// с фиксированной точкой и N дробными знаками. Если N = 0,
|
|
|
|
|
|
/// то число выводится в экспоненциальном формате, число дробных
|
|
|
|
|
|
/// знаков определяется шириной поля вывода
|
2017-03-08 00:30:47 +03:00
|
|
|
|
procedure SetPrecision(N: integer);
|
2019-03-08 19:27:10 +03:00
|
|
|
|
|
|
|
|
|
|
/// Обеспечивает автоматическое скрытие всех разделов
|
|
|
|
|
|
/// окна задачника, кроме раздела отладки
|
2017-03-08 00:30:47 +03:00
|
|
|
|
procedure HideTask;
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-05-14 22:35:07 +03:00
|
|
|
|
implementation
|
|
|
|
|
|
|
|
|
|
|
|
uses
|
|
|
|
|
|
PT4, System.IO, System.Text;
|
|
|
|
|
|
|
|
|
|
|
|
procedure ToWin(s: string);
|
|
|
|
|
|
begin
|
|
|
|
|
|
var fs: StreamReader := new StreamReader(s);
|
|
|
|
|
|
var fs1: StreamWriter := new StreamWriter('$$.tmp', false,
|
|
|
|
|
|
Encoding.Default);
|
|
|
|
|
|
fs1.Write(fs.ReadToEnd);
|
|
|
|
|
|
fs.Close;
|
|
|
|
|
|
fs1.Close;
|
|
|
|
|
|
System.IO.File.Delete(s);
|
|
|
|
|
|
System.IO.File.Move('$$.tmp',s);
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
var
|
|
|
|
|
|
NextTask: boolean := False;
|
2021-11-02 11:52:53 +03:00
|
|
|
|
s2: string;
|
2015-05-14 22:35:07 +03:00
|
|
|
|
|
|
|
|
|
|
procedure Task(name: string);
|
|
|
|
|
|
var
|
|
|
|
|
|
f: textfile;
|
|
|
|
|
|
begin
|
|
|
|
|
|
PT4.Task(name);
|
|
|
|
|
|
if NextTask then
|
|
|
|
|
|
exit;
|
|
|
|
|
|
NextTask := True;
|
|
|
|
|
|
GetS(s2);
|
|
|
|
|
|
if s2 = '' then
|
2019-03-08 19:27:10 +03:00
|
|
|
|
begin
|
2015-05-14 22:35:07 +03:00
|
|
|
|
s2 := 'null2.tst';
|
2019-03-08 19:27:10 +03:00
|
|
|
|
end;
|
2015-05-14 22:35:07 +03:00
|
|
|
|
Assign(output, s2);
|
|
|
|
|
|
Rewrite(output);
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
2021-11-02 11:52:53 +03:00
|
|
|
|
function ReadString: string;
|
|
|
|
|
|
begin
|
|
|
|
|
|
result := PT4.ReadString;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
2015-05-14 22:35:07 +03:00
|
|
|
|
procedure FinExam;
|
|
|
|
|
|
begin
|
2019-03-08 19:27:10 +03:00
|
|
|
|
Sleep(100);
|
2015-05-14 22:35:07 +03:00
|
|
|
|
Close(output);
|
|
|
|
|
|
if s2 = 'null2.tst' then
|
|
|
|
|
|
Erase(output)
|
|
|
|
|
|
else
|
|
|
|
|
|
ToWin(s2);
|
|
|
|
|
|
NextTask := false;
|
2019-03-08 19:27:10 +03:00
|
|
|
|
Sleep(100);
|
2015-05-14 22:35:07 +03:00
|
|
|
|
end;
|
|
|
|
|
|
|
2019-03-08 19:27:10 +03:00
|
|
|
|
// == Версия 1.3. Дополнения ==
|
|
|
|
|
|
|
2017-03-08 00:30:47 +03:00
|
|
|
|
procedure Show(S: string);
|
|
|
|
|
|
begin
|
|
|
|
|
|
PT4.Show(S);
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
2019-03-08 19:27:10 +03:00
|
|
|
|
procedure Show(params args: array of object);
|
2017-03-08 00:30:47 +03:00
|
|
|
|
begin
|
2019-03-08 19:27:10 +03:00
|
|
|
|
PT4.Show(args);
|
2017-03-08 00:30:47 +03:00
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure ShowLine;
|
|
|
|
|
|
begin
|
|
|
|
|
|
PT4.ShowLine;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
2019-03-08 19:27:10 +03:00
|
|
|
|
procedure ShowLine(params args: array of object);
|
2017-03-08 00:30:47 +03:00
|
|
|
|
begin
|
2019-03-08 19:27:10 +03:00
|
|
|
|
PT4.ShowLine(args);
|
2017-03-08 00:30:47 +03:00
|
|
|
|
end;
|
|
|
|
|
|
|
2019-03-08 19:27:10 +03:00
|
|
|
|
procedure SetWidth(W: Integer);
|
2017-03-08 00:30:47 +03:00
|
|
|
|
begin
|
2019-03-08 19:27:10 +03:00
|
|
|
|
PT4.SetWidth(W);
|
2017-03-08 00:30:47 +03:00
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure HideTask;
|
|
|
|
|
|
begin
|
|
|
|
|
|
PT4.HideTask;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure SetPrecision(N: Integer);
|
|
|
|
|
|
begin
|
|
|
|
|
|
PT4.SetPrecision(N);
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-05-14 22:35:07 +03:00
|
|
|
|
initialization
|
2021-11-08 09:28:51 +03:00
|
|
|
|
PrintDelimDefault := '';
|
2015-05-14 22:35:07 +03:00
|
|
|
|
finalization
|
|
|
|
|
|
|
|
|
|
|
|
FinExam;
|
|
|
|
|
|
|
|
|
|
|
|
end.
|