дан массив из 10 элементов (числа от 10 до 30) отсортировать список по произведению чисел

Ответы

Ответ дал: alimuhammad61734
0

Ответ: Внизу я дал подробное решение с ходом действий на трех разных языках: 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;

}

Вас заинтересует