саят17
06.12.2020 01:56

8сынып информатика бжб 1 тоқсан​

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Zhuldyzovazarina
15.01.2022 20:02
// PascalABC.NET 3.2, сборка 1439 от 09.05.2017
// Внимание! Если программа не работает, обновите версию!

begin
  ReadlnString.MatchValues('\d+').Select(w->(w,w.Distinct
      .OrderBy(c->c).JoinIntoString(''))).GroupBy(t->t[1])
      .Where(x->x.Count>1).Select(x->x.UnZipTuple.Item1.
      Select(x->x.ToInteger).Average).Println;
end.

Пример
это   3242 такая 181 вот 346   странная  432  1118 строка
1837 649.5

Как все это работает (функциональное программирование)

ReadlnString - считываем строку с клавиатуры

.MatchValues('\d+') - выбираем подстроки символов, состоящие из цифр

.Select(w->(w,w.Distinct.OrderBy(c->c).JoinIntoString(''))) - эта сложная конструкция сначала в каждой подстроке оставляет только разные цифры и сортирует их в порядке возрастания, затем соединяет эти цифры в строку и объединяет исходную подстроку с полученной строкой в так называемый кортеж. Полученный кортеж для каждой исходной подстроки содержит два элемента: саму подстроку и строку из уникальных цифр этой подстроки, расположенных по возрастанию.

.GroupBy(t->t[1]) - группирует кортежи в более крупные блоки так, чтобы каждый блок содержал кортежи, у которых второй элемент одинаков.

.Where(x->x.Count>1) - оставляет только те блоки, в которых больше одного кортежа, ведь нам не нужны "числа-одиночки"

.Select(x->x.UnZipTuple.Item1 - техническая операция, превращающая в каждом блоке кортеж в последовательность подстрок, представляющих исходные числа

.Select(x->x.ToInteger) - каждая такая последовательность подстрок превращается в последовательность целых чисел

.Average) - находятся средние арифметические каждой последовательности

.Println - вывод всех найденных значений.

Все это не так уж просто, но и задание далеко не тривиальное. Если записать его средствами "традиционного паскаля" - такого примерно, как Free Pascal, код будет огромным...
0,0(0 оценок)
Ответ:
nlenp6635Alena0lo
20.07.2020 16:10
Const n=4; m=5;
var a:array[1..n,1..m] of integer;
i,j:integer;
begin
for i:=1 to n do
 begin
 for j:=1 to m do
  begin
  a[i,j]:=random(1000);
  write(a[i,j]:4);
  end;
 writeln;
 end;
for i:=1 to n do
 for j:=1 to m do
   if (a[i,j] mod 7=0)and(a[i,j]>99)and(a[i,j]<1000) then a[i,j]:=a[i,j]-10;
writeln('New:');
for i:=1 to n do
  begin
 for j:=1 to m do write(a[i,j]:4);
 writeln;
 end;
end.

Пример889 188 17 186 772
394 121 406 679 936
 20 147 868 691 450
525 73 575 232 416
New:
879 188 17 186 772
394 121 396 669 936
 20 137 858 691 450
515 73 575 232 416
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота