while not Eof(FileText) do begin case Counter of 1: Readln(FileText, Names[1]); 2: Readln(FileText, Numbers[1]); 4: Readln(FileText, Names[2]); 5: Readln(FileText, Numbers[2]); 7: Readln(FileText, Names[3]); 8: Readln(FileText, Numbers[3]); end;
counter := counter + 1; end;
close(FileText);
while CFE = false do begin Bol := false;
Write('Введите Фамилию и инициалы сотрудника (0 - выход): '); Readln(worker);
if (worker = '0') then CFE := true
else begin for i := 1 to 3 do begin if (worker = Names[i]) then begin Writeln('Телефон: ', Numbers[i]); Writeln(); Bol := true; end; end;
if (Bol = false) then begin Writeln(); Writeln('Сотрудник не обнаружен!'); Writeln(); end; end; end;
Воспользуемся законом де Моргана: НЕ(А ИЛИ B) = НЕ(A) И НЕ(B) = (НЕ(сумма цифр нечетная) И НЕ(число четное)). Из этого следует, что обе скобки отрицаются, то есть значения внутри них становятся противоположными: (Сумма цифр четная) И (число нечетное). И - означает, что условие внутри обоих скобок должно быть истинно, то есть должно выполняться.
//Не забудьте указать новое расположение файла, если решите создать файл f1 в другом месте
//Данная программа работает только для определенной записи сотрудников и номеров (как указано на фото)
--------------------------------------
Program Test;
Uses crt;
var FileText: text; Names: array[1..3] of string; Numbers: array[1..3] of string; counter, i: integer; worker: string; Bol, CFE: boolean;
Begin
clrscr;
counter := 1;
CFE := false;
assign (FileText, 'C:\Test\f1.txt');
reset (FileText);
while not Eof(FileText) do
begin
case Counter of
1: Readln(FileText, Names[1]);
2: Readln(FileText, Numbers[1]);
4: Readln(FileText, Names[2]);
5: Readln(FileText, Numbers[2]);
7: Readln(FileText, Names[3]);
8: Readln(FileText, Numbers[3]);
end;
counter := counter + 1;
end;
close(FileText);
while CFE = false do
begin
Bol := false;
Write('Введите Фамилию и инициалы сотрудника (0 - выход): ');
Readln(worker);
if (worker = '0') then
CFE := true
else
begin
for i := 1 to 3 do
begin
if (worker = Names[i]) then
begin
Writeln('Телефон: ', Numbers[i]);
Writeln();
Bol := true;
end;
end;
if (Bol = false) then
begin
Writeln();
Writeln('Сотрудник не обнаружен!');
Writeln();
end;
end;
end;
End.
Из этого следует, что обе скобки отрицаются, то есть значения внутри них становятся противоположными:
(Сумма цифр четная) И (число нечетное).
И - означает, что условие внутри обоих скобок должно быть истинно, то есть должно выполняться.
1. 2+2 = 4 - сумма цифр четная, число четное - исключаем.
2. 3+4 = 7 - сумма цифр нечетная, число четное - исключаем.
3. 4+1 = 5 - сумма цифр нечетная, число нечетное - исключаем.
4. 7+5 = 12 - сумма цифр четная, число нечетное - подходит.
ответ: 4.