Ответ: Внизу я дал подробное решение с ходом действий на трех разных языках: Python, Pascal, C++ На языке Python: arr = [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
# Отсортировать массив по произведению чисел
arr.sort(key=lambda x: x[0]*x[1])
# Вывести отсортированный массив
print(arr)
На языке Pascal: Program SortList;
var
arr: array[1..10] of Integer;
i, j, temp: Integer;
begin
writeln('Original array: ');
for i := 1 to 10 do
begin
arr[i] := 10 + i;
write(arr[i], ' ');
end;
for i := 1 to 9 do
begin
for j := 1 to 10 - i do
begin
if arr[j]*arr[j+1] > arr[j+1]*arr[j] then
begin
temp := arr[j];
arr[j] := arr[j+1];
arr[j+1] := temp;
end;
end;
end;
writeln;
writeln('Sorted array: ');
for i := 1 to 10 do
write(arr[i], ' ' );
readln;
end.
На C++ #include <iostream>
using namespace std;
// Функция для сортировки массива в порядке убывания
void sortByProduct(int arr[], int n)
{
// Инициализация продукта int product = 1;
// Цикл для вычисления произведения всех элементов
Answers & Comments
Ответ: Внизу я дал подробное решение с ходом действий на трех разных языках: Python, Pascal, C++
На языке Python:
arr = [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
# Отсортировать массив по произведению чисел
arr.sort(key=lambda x: x[0]*x[1])
# Вывести отсортированный массив
print(arr)
На языке Pascal:
Program SortList;
var
arr: array[1..10] of Integer;
i, j, temp: Integer;
begin
writeln('Original array: ');
for i := 1 to 10 do
begin
arr[i] := 10 + i;
write(arr[i], ' ');
end;
for i := 1 to 9 do
begin
for j := 1 to 10 - i do
begin
if arr[j]*arr[j+1] > arr[j+1]*arr[j] then
begin
temp := arr[j];
arr[j] := arr[j+1];
arr[j+1] := temp;
end;
end;
end;
writeln;
writeln('Sorted array: ');
for i := 1 to 10 do
write(arr[i], ' ' );
readln;
end.
На C++
#include <iostream>
using namespace std;
// Функция для сортировки массива в порядке убывания
void sortByProduct(int arr[], int n)
{
// Инициализация продукта
int product = 1;
// Цикл для вычисления произведения всех элементов
for (int i = 0; i < n; i++)
product *= arr[i];
for (int i = n - 1; i > 0; i--) {
// Произведение оставшихся чисел
int x = product / arr[i];
// Находим наибольшее число, которое делит.
// x и меньше, чем arr[i]
int j;
for (j = i - 1; j >= 0; j--)
if (arr[j] % x == 0)
break;
// Меняем местами arr[i] с arr[j]
if (j != -1) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
// Отображаем отсортированный массив
cout << "Sorted array: ";
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
}
int main()
{
int arr[] = { 10, 20, 30, 15, 25, 18, 27, 28, 29, 21 };
int n = sizeof(arr) / sizeof(arr[0]);
sortByProduct(arr, n);
return 0;
}