В языке запросов поискового сервера для обозначения логической операции «ИЛИ» используется символ |, а для логической операции «И» - символ &. В таблице приведены запросы и количество найденных по ним страниц некоторого сегмента сети Интернет. Запрос Найдено страниц (в тысячах)
Карандаш&Алмаз 0
Карандаш&Графит 180
Алмаз&Графит 150
Карандаш 540
Алмаз 700
Карандаш | Графит | Алмаз 1600
Какое количество страниц (в тысячах) будет найдено по запросу Графит?Считается, что все запросы выполнялись практически одновременно, так что набор страниц, содержащих все искомые слова, не изменялся за время выполнения запросов.
*** этот файл мы должны назвать nekkit20.pas ***
*** после его компиляции будет создан модуль ***
unit nekkit20;
type
tra=(string,integer);
function RomeToArab(s:string):integer;
// Перевод римских чисел (не больших MMMCMXCIX) в арабские
begin
var ar:='IVXLCDM';
var aa:=Arr(1,5,10,50,100,500,1000);
var n:=0;
Result:=0;
foreach var c in s do
begin
var c1:=n;
n:=aa[Pos(c,ar)-1];
Result+=n+(n>c1?-2*c1:0)
end;
end;
function Equal(r:array of string; a:array of integer):sequence of tra;
// Возвращает последовательность кортежей
// из массива римских чисел (массив r),
// для которых есть соответствие в массиве арабских чисел (массив a)
begin
foreach var q in r do
begin
var n:=RomeToArab(q);
if a.IndexOf(n)>-1 then yield((q,n))
end
end;
end.
*** а это другой файл с любым именем, кроме nekkit20 ***
*** он обращается к молулю nekkit20 ***
uses nekkit20;
begin
var sr:=Arr('DXVIII','LXIII','MII','XIV','LXXXVIII','CXCVI');
var ar:=Arr(14,98,196,1002,518,64,87);
var R:=Equal(sr,ar);
if R.Count=-1 then Writeln('Нет совпадений')
else
foreach var t in R do
Writeln(t[0],' = ',t[1])
end.
*** Контрольный пример ***
DXVIII = 518
MII = 1002
XIV = 14
CXCVI = 196
program znanija;
uses CRT;
Var n,k,sum,ch,nch: integer;
sa: real;
M: Array[1..25] of integer;
begin
write('Ведите N: ');readln(n);
for k:=1 to 25 do
begin
M[k]:=random(n);
sum:=sum+M[k];
if (M[k] mod 2 = 0) then
begin
ch:=ch+1;
end else
begin
nch:=nch+1;
end;
end;
sa:=sum/25;
Writeln('Среднее арихметическое - ',sa);
Writeln('Сумма чисел - ', sum);
Writeln('Количество чётных - ', ch);
Writeln('Количество не чётных - ', nch);
writeln('--Числа--');
for k:=1 to 25 do
begin
Write(m[k],', ');
end
end.