1) Нет котангенса ни в одной из реализаций паскаля (вот за Дельфи только не скажу, нет у меня её). 2) Выражение d≠1 & d≠2 & d≠3 & d≠4 & d≠5 & d≠6 & d≠7 & d≠8 & d≠9 & d≠10 & d≠11, если d - целочисленная переменная, можно упростить. Оно говорит, что d не входит в интервал целых чисел от 1 до 11, т.е. d ∉ [1;11]. Но тогда d ∈ [-∞;1), (11,∞), что заменяется парой условий d<1, d>11, или d<1 or d>11 В синтаксисе языка паскаль: if (d<1) or (d>11) then
procedure WriteToFile(data, file_name: string); var f: text; begin Assign(f, file_name); Rewrite(f); Write(f, data); Close(f); end;
procedure OpenFileToRead(file_name: string; var f: text); begin Assign(f, file_name); Reset(f); end;
procedure CreateFilesWithData(Drivers, Marks, Numbers, Colors: string); var c: Car; s1, s2, s3, s4: string; i: integer; begin for i := 1 to n do begin {c.DriverName := Random(9).ToString;} write('Имя водителя = '); readln(c.DriverName); s1 := s1 + c.DriverName + chr(13);
ReadLn(f1, cars[i].DriverName); ReadLn(f2, cars[i].Mark); ReadLn(f3, cars[i].Number); ReadLn(f4, cars[i].Color); {не учитывается вариант что кол-во строк может быть разным} end;
Close(f1); Close(f2); Close(f3); Close(f4); end;
function Query1(mark, color: string): string; var s: string; i: integer; begin for i := 1 to n do if (cars[i].Mark = mark) and (cars[i].Color = color) then s := s + cars[i].DriverName + ' ' + cars[i].Number + chr(13);
if s = '' then Query1 := 'Ничего не найдено' else Query1 := s; end;
function Query2(): string; var s: string; i: integer; begin for i := 1 to n do if (cars[i].Number[1] = cars[i].Number[Length(cars[i].Number)]) then s := s + cars[i].DriverName + ' ' + cars[i].Mark + ' ' + cars[i].Color + chr(13);
if s = '' then Query2 := 'Ничего не найдено' else Query2 := s; end;
var mark, color: string;
begin CreateFilesWithData('f1.txt', 'f2.txt', 'f3.txt', 'f4.txt'); ReadFiles('f1.txt', 'f2.txt', 'f3.txt', 'f4.txt'); for i := 1 to n do writeln(CarToString(cars[i]));
Write('Искомая марка = ');readln(mark); Write('Искомый цвет = ');readln(color); writeln(Query1(mark, color));
writeln('Hомера начинаются и заканчиваются одной буквой'); writeln(Query2()); end.
2) Выражение
d≠1 & d≠2 & d≠3 & d≠4 & d≠5 & d≠6 & d≠7 & d≠8 & d≠9 & d≠10 & d≠11,
если d - целочисленная переменная, можно упростить. Оно говорит, что d не входит в интервал целых чисел от 1 до 11, т.е. d ∉ [1;11].
Но тогда d ∈ [-∞;1), (11,∞), что заменяется парой условий d<1, d>11, или
d<1 or d>11
В синтаксисе языка паскаль: if (d<1) or (d>11) then
Если d имеет тип real, выражение не упрощается.
const
n = 10;
type
Car = record
DriverName: string[20];
Mark: string[20];
Number: string[6];
Color: string[20];
end;
var
cars: array[1..n] of Car;
i: integer;
function CarToString(c: Car): string;
begin
CarToString := c.DriverName + ' ' + c.Mark + ' ' + c.Number + ' ' + c.Color;
end;
procedure WriteToFile(data, file_name: string);
var
f: text;
begin
Assign(f, file_name);
Rewrite(f);
Write(f, data);
Close(f);
end;
procedure OpenFileToRead(file_name: string; var f: text);
begin
Assign(f, file_name);
Reset(f);
end;
procedure CreateFilesWithData(Drivers, Marks, Numbers, Colors: string);
var
c: Car;
s1, s2, s3, s4: string;
i: integer;
begin
for i := 1 to n do
begin
{c.DriverName := Random(9).ToString;}
write('Имя водителя = ');
readln(c.DriverName);
s1 := s1 + c.DriverName + chr(13);
{c.Mark := Random(9).ToString;}
write('Марка = ');
readln(c.Mark);
s2 := s2 + c.Mark + chr(13);
{c.Number := Random(100, 999).ToString + Random(100, 999).ToString;}
write('Номер = ');
readln(c.Number);
s3 := s3 + c.Number + chr(13);
{c.Color := Random(9).ToString;}
write('Цвет = ');
readln(c.Color);
s4 := s4 + c.Color + chr(13);
end;
WriteToFile(s1, Drivers);
WriteToFile(s2, Marks);
WriteToFile(s3, Numbers);
WriteToFile(s4, Colors);
end;
procedure ReadFiles(Drivers, Marks, Numbers, Colors: string);
var
f1, f2, f3, f4: text;
i: integer;
begin
OpenFileToRead(Drivers, f1);
OpenFileToRead(Marks, f2);
OpenFileToRead(Numbers, f3);
OpenFileToRead(Colors, f4);
i := 0;
while not Eof(f1) do
begin
i := i + 1;
ReadLn(f1, cars[i].DriverName);
ReadLn(f2, cars[i].Mark);
ReadLn(f3, cars[i].Number);
ReadLn(f4, cars[i].Color);
{не учитывается вариант что кол-во строк может быть разным}
end;
Close(f1);
Close(f2);
Close(f3);
Close(f4);
end;
function Query1(mark, color: string): string;
var
s: string;
i: integer;
begin
for i := 1 to n do
if (cars[i].Mark = mark) and (cars[i].Color = color) then
s := s + cars[i].DriverName + ' ' + cars[i].Number + chr(13);
if s = '' then Query1 := 'Ничего не найдено'
else Query1 := s;
end;
function Query2(): string;
var
s: string;
i: integer;
begin
for i := 1 to n do
if (cars[i].Number[1] = cars[i].Number[Length(cars[i].Number)]) then
s := s + cars[i].DriverName + ' ' + cars[i].Mark + ' ' + cars[i].Color + chr(13);
if s = '' then Query2 := 'Ничего не найдено'
else Query2 := s;
end;
var
mark, color: string;
begin
CreateFilesWithData('f1.txt', 'f2.txt', 'f3.txt', 'f4.txt');
ReadFiles('f1.txt', 'f2.txt', 'f3.txt', 'f4.txt');
for i := 1 to n do
writeln(CarToString(cars[i]));
Write('Искомая марка = ');readln(mark);
Write('Искомый цвет = ');readln(color);
writeln(Query1(mark, color));
writeln('Hомера начинаются и заканчиваются одной буквой');
writeln(Query2());
end.