Задача 3 Всемирно известная компания "Cucumber" выпускает мобильные гаджеты и устройства для «умного дома». Но время идёт, и компания прекращает поддерживать старые устройства.
Словари mobile_devices и home_devices содержат полный перечень техники производства "Cucumber".
Множество not_supported_devices хранит названия устройств, поддержка которых прекращена.
Ваша программа должна составить словарь result_supported, в котором будут перечислены все устройства, поддержка которых не прекратилась; в словаре должны быть и устройства для «умного дома», и мобильные гаджеты.
Этот словарь будет выведен на печать.
Программа должна напечатать примерно такую строку:
{'cucuLot': 2011, 'cucuMonitor': 2020, 'cucuEar': 2018, ...}
Ход работы:
создать из ключей двух словарей единый сет all_devices;
создать сет result_devices, содержащий разность сетов all_devices и not_supported_devices; это будет перечень названий устройств, поддержка которых не прекращена;
перебрать сет result_devices в цикле: for device in result_devices:
Для каждого элемента device провести проверку: есть ли в словаре mobile_devices элемент с ключом device. Если есть — то добавить элемент словаря mobile_devices[device] в итоговый словарь result_supported.
Провести такую же проверку для словаря home_devices, и добавить обнаруженные элементы home_devices[device] в словарь result_supported.
А что в коде?
Функция union_devices() должна получить полный перечень названий всех устройств вернуть его как объект типа set.
Функция difference_device() должна найти разницу между полным перечнем всех устройств и сетом not_supported_devices; функция должна вернуть сет, в котором содержатся отличающиеся элементы двух исходных сетов.
Функция is_supported() должна проверить, есть ли в словаре mobile_devices или в словаре home_devices ключ, переданный в аргументе; если есть — добавить в результирующий словарь элемент с этим ключом.
программа(https://paste.ofcode.org/ZQZJzgszuCe7ms6czgFaWX)
var
c, a: array[1..20] of integer;
i: integer;
begin
write('Первый массив ');
for i := 1 to 20 do begin
c[i] := i * (-5);
write(c[i], ' ');
end;
writeln;
write('Преобразованный массив ');
for i := 1 to 20 do begin
a[i] := c[20 - i + 1];
write(a[i], ' ');
end;
end.
ИЛИ Программа не использующая два массива, а просто переворачивающая первый
var
c: array[1..20] of integer;
i: integer;
begin write('Первый массив ');
for i := 1 to 20 do begin
c[i] := i * (-5);
write(c[i], ' ');
end;
writeln;
write('Преобразованный массив ');
for i := 20 downto 1 do write(c[i], ' ');
end.
Обе программы работают!
n=5;
Var
ar:array[1..n] of integer;
ar2:array[1..n] of integer;
i,k:integer;
function prost(a:integer):boolean;
var i:integer;
b:boolean;
begin
b:=true;
for i:=2 to a div 2 do
if a mod i=0 then
begin;
b:=false;
break;
end;
if a=1 then b:=false;
prost:=b;
end;
begin;
randomize;
k:=0;
for i:=1 to n do
begin;
ar[i]:=random(101);
write(ar[i]:4);
end;
writeln;
for i:=1 to n do
if prost(ar[i]) then
begin;
inc(k);
ar2[k]:=ar[i];
write(ar2[k]:4);
end;
end.