М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
070974zZ
070974zZ
22.06.2021 23:50 •  Информатика

Склавиатуры вводится строка, состоящая из слов и чисел, разделенных одним или несколькими пробелами. подсчитать среднее арифметическое всех чисел, которые состоят из одинаковых цифр.

👇
Ответ:
// 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, код будет огромным...
4,8(76 оценок)
Открыть все ответы
Ответ:
Arina1666
Arina1666
22.06.2021

Відповідь:

Величина ( значення ) - одиниця даних , що заявлена ​​своїм іменем ( ідентифікатором ) або його значенням ; об'єкт , яким пов'язується з деяка множини значень.

Пояснення:

Величини поділяють на змінні та постійні (константи). Величина, яка має одне й те саме значення в будь-які моменти часу, називається постійною, або константою. Величина, яка в різні моменти часу може набувати різних значень, називається змінною. Стандартні типи даних:  INTEGER (цілий). ...  REAL (дійсний). ...   CHAR (символьний тип). ...   BOOLEAN (булевий або логічний тип).  Після заголовка процедури перед тілом процедури, яке обмежується службовими словами begin та end, розміщують розділ оголошення змінних, що розпочинається службовим словом var:  var ім’я_змінної: тип_змінної; Константи бувають числовими та символьними; Присвоює змінній конкретне значення, заповнюючи комірку пам'яті, відведену для змінної, новим значенням, відночас знищу­ючи старе

4,4(63 оценок)
Ответ:
svetlanasevasty
svetlanasevasty
22.06.2021

Объяснение:

#include <iostream>

#include <ctime>

using namespace std;

int main()

{

srand(time(NULL));

int m, n;

cin >> m >> n;

if (m <= 0 || n <= 0) return 0;

int** arr = new int* [m];

for (int i = 0; i < m; i++)

{

 arr[i] = new int[n];

}

cout << endl;

for (int i = 0; i < m; i++)

{

 for (int j = 0; j < n; j++)

 {

  arr[i][j] = rand() % 11 - 5;

  cout.width(3);

  cout << arr[i][j];

 }

 cout << endl;

}

cout << endl;

int belowZero = 0;

for (int i = 0; i < m; i++)

{

 int sum = 0;

 for (int j = 0; j < n; j++)

 {

  sum += arr[i][j];

 }

 if (sum < 0) belowZero++;

}

cout << "  Answer: " << belowZero << endl;

for (int i = 0; i < m; i++)

{

 delete[] arr[i];

}

delete[] arr;

}

4,7(93 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ