Входной и выходной файл. Исправить код программы - Pascal
Формулировка задачи:
Имя входного файла: b.in
Имя выходного файла: b.out
Два сотрудника подали своему начальнику заявление на отпуск. Первый попросил отпустить его с А1 по В1 день (дни отсчитываются с начала года), второй - с А2 по В2 день. Считаем что А1<B1 и А2<B2. Однако дело требует, чтобы один из сотрудников находился на работе. Мало того, при смене отдыхающих необходимо не менее 3 дней их совместной работы - для передачи дел. Напишите программу, принимающую четыре указанных выше параметра, и печатающую заключение о том, удовлетворяют ли заявления требованиям начальника.
Формат входного файла: входной файл содержит четыре целых числа по 2 на каждой строке. А1, В1 на первой строке и А2, В2 на второй строке (А1,А2,В1,В2<365). Формат выходного файла: выходной файл содержит ответ ""да" или "нет"
Вот что у меня вышло
Заранее спасибо
uses crt; var a,b:text; A1,B1,A2,B2: integer; begin assign (a,'a.in'); reset(a); assign (b,'a.out');rewrite(b); readln(a); procedure var S: string; begin if B2>B1 then begin if A2-A1>3 then S:='Да' else S:='нет'; end; writeln(S); end; end.
Решение задачи: «Входной и выходной файл. Исправить код программы»
textual
Листинг программы
const
ERROR_ANSWER: Array[Boolean, Boolean] Of String = (('Неверный диапазон!', 'Неверный диапазон!'), ('нет', 'да'));
var
f, g: Text;
a1, b1, a2, b2: Integer;
function CheckRange(const a, b: Integer): Boolean;
begin
CheckRange := (a > 0) And (b > a) And (b < 365);
end;
begin
Assign(f, 'b.in'); Reset(f);
Assign(g, 'b.out'); Rewrite(g);
ReadLn(f, a1, b1); ReadLn(f, a2, b2);
WriteLn(g, ERROR_ANSWER[CheckRange(a1, b1) And CheckRange(a2, b2), (a2 > b1 + 3)]);
Close(f); Close(g);
end.
Объяснение кода листинга программы
- Объявление константы
ERROR_ANSWER- это двумерный массив строк, содержащий сообщения об ошибке и фразыдаилинет, в зависимости от переданных булевских значений. - Объявление переменных
fиg- это текстовые файлы. - Объявление переменных
a1,b1,a2,b2- это целочисленные переменные. - Определение функции
CheckRange- эта функция принимает два целых числа и возвращает булевское значение в зависимости от того, соответствуют ли они определенному диапазону. - Открытие файла
b.inдля чтения. - Открытие файла
b.outдля записи. - Считывание значений из файла
b.inв переменныеa1,b1,a2,b2. - Запись результата выполнения функции
CheckRangeи выражения(a2 > b1 + 3)в файлb.out, используя константуERROR_ANSWER. - Закрытие файлов
b.inиb.out.