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

Нужно решить в паскале abc w6 и w10​

👇
Открыть все ответы
Ответ:
петлю
петлю
17.04.2022

Відповідь:

#include <iostream>

#include <cstdlib>

#include <time.h>

using namespace std;

void SetArray(int *A,int N){

for(int i = 0; i < N; i++){

 A[i] = rand() % 10 + 1;

}

}

void PrintArray(int *A,int N){

for(int i = 0;i < N; i++){

cout << A[i] << " ";

}

}

void expression(int *A,int N,int k,int l){

for(int i = k; k < l; k++ , l--){

 swap(A[k], A[l]);

}

}

int main(){

srand(time(NULL));

setlocale(LC_ALL , "Ukrainian");

int N,k,l;

cout << "Введiть розмiр масиву: ";

cin >> N;

int *A = new int[N];

SetArray(A,N);

PrintArray(A,N);

cout << "\nВведiть k: ";

cin >> k;

cout << "Введiть l: ";

cin >> l;

expression(A,N,k,l);

PrintArray(A,N);

delete[] A;            

return 0;

}

4,5(81 оценок)
Ответ:
// 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 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ