Грудинин604
?>

Дано описание переменных. Выбери верные ответы. var int1, int3: integer; d:string ; M: char; begin 1.Имена переменных 2.Типы данных

Информатика

Ответы

maryariazantseva

Имена переменных:

int1, int3, d, M

Типы данных:

integer, string, char

Цветкова
#include <iostream>
using namespace std;

int main()
{
    setlocale (LC_ALL,"Russian");
    int number;
    do
    {
        cout <<"Введите номер группы: ";
        cin >> number;
    }
    while (number<100 || number>999);
    char *groups[9]={"исторический","экономический","юридический",
                             "математический","физический","химический",
                             "биологический","географический","географический"};
    cout <<groups[number/100-1] <<", поступил в 200" <<number/10%10
           <<" году\n";
    return 0;
}
Как задание понял, так и написал
egorstebenev6
// 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, код будет огромным...

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Дано описание переменных. Выбери верные ответы. var int1, int3: integer; d:string ; M: char; begin 1.Имена переменных 2.Типы данных
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

ekvld708
petrovichvit2933
Wlad967857
manimen345
mvv-155
tvmigunova551
Tane4ka2110
iraira761
gavrilasmax05
Александра_Наталья1417
yanermarina87
marinanx
Tipan77
Александрович686
natanikulina1735