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

C++ в этой от вас потребуется написать функцию bool is_permutation(int* a, int* b, int size), которой дается два массива a и b, и она должна вернуть true, если массив b можно получить из массива a перестановкой элементов, и false, если нельзя. считайте оба массива с клавиатуры, используйте функцию и выведите «yes» или «no» в зависимости от того, что вернула функция.

👇
Ответ:
Danilalmaz
Danilalmaz
07.10.2020
Сортируем оба массива и проверяем, совпали ли они. Если совпали, то это перестановка.
#include <iostream>
 
int* sorted(int *A, int size) {
  int *B = new int[size];
  for (int i = 0; i < size; ++i) B[i] = A[i];
  for (int i = 0; i < size - 1; ++i) {
    for (int j = i + 1; j < size; ++j) {
      if (B[i] > B[j]) {
        int t = B[i];
        B[i] = B[j];
        B[j] = t;
      }
    }
  }
  return B;
}
 
bool arr_eq(int *A, int *B, int size) {
  for (int i = 0; i < size; ++i) {
    if (A[i] != B[i]) return false;
  }
  return true;
}
 
bool is_permutation(int* A, int* B, int size) {
  int *sA = sorted(A, size), *sB = sorted(B, size);
  bool is_perm = arr_eq(sA, sB, size);
  delete [] sA;
  delete [] sB;
  return is_perm;
}
 
int* read_arr_int(int size) {
  int *A = new int[size];
  for (int i = 0; i < size; ++i) {
    std::cin >> A[i];
  }
  return A;
}
 
int main() {
  int n = 0;
  std::cin >> n;
  int *A = read_arr_int(n), *B = read_arr_int(n);
  std::cout << (is_permutation(A, B, n) ? "YES" : "NO");
  delete [] A;
  delete [] B;
  return 0;
}
4,7(42 оценок)
Открыть все ответы
Ответ:
22222222227
22222222227
07.10.2020
// PascalABC.NET 3.1, сборка 1218 от 12.04.2016
begin
  var a:=ArrRandom(ReadInteger('n='),1,99);
  a.Println;
  var k:=ReadInteger('k=');
  Writeln('Сумма чисел, кратных ',k,': ',
    a.Where(x->x mod k=0).Sum)
end.

Тестовое решение:
n= 18
45 17 36 15 65 17 97 44 49 43 60 51 66 72 18 55 71 85
k= 12
Сумма чисел, кратных 12: 168

// PascalABC.NET 3.1, сборка 1218 от 12.04.2016
begin
  var a:=ArrRandom(ReadInteger('n='),1,20);
  a.Println;
  a.Where((x,i)->x=i+1).Println
end.

Тестовое решение:
n= 16
17 2 1 14 20 19 10 3 9 15 14 4 2 7 2 16
2 9 16
4,5(91 оценок)
Ответ:
Vitiaaaa
Vitiaaaa
07.10.2020
1.
const n=20; 
var
  a:array[1..n] of integer;
  i,k,s:integer;
begin
Randomize;
writeln('Исходный массив:');
for i:=1 to n do begin
  a[i]:=Random(51)-25;
  Write(a[i]:4)
end;
writeln;
write('K = '); readln(k);
s:=0;
for i:=1 to n do 
 if a[i] mod k = 0 then s:=s+a[i];
Writeln('s = ',s);
end.

Пример:
Исходный массив:
18 -24 -4 -21 15 19 18 -16 -1 -8 7 -21 21 22 -24 -4 18 -16 24 4
K = 3
s = 24

2.
const n=10; 
var
  a:array[1..n] of integer;
  i:integer;
begin
Randomize;
writeln('Исходный массив:');
for i:=1 to n do begin
  a[i]:=Random(11);
  Write(a[i]:4)
end;
writeln;
writeln('Выбранные элементы:');
for i:=1 to n do 
 if a[i]<=i then Write(a[i]:4) else write(' ':4);
Writeln;
end.

Пример:
Исходный массив:
   9   1   2   8   2   7   1  10   8   3
Выбранные элементы:
       1   2       2       1       8   3
4,6(57 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ