Изменение индекса в массиве - C#

Узнай цену своей работы

Формулировка задачи:

Я разу не программист. У меня есть массив чисел размерностью 10. Он заполняется числами от 1 до 10 случайно. Числа в массиве могут повторяться. Теперь надо взять 5 самых старших чисел из этого массива, но таким образом, чтобы они шли по порядку, например 10 9 8 7 6. Если такой комбинации нет, то ничего не делать. Также нужно сделать так, чтобы считало ещё и 4 3 2 1 0. 0 - это число 10 в этом массиве, если оно есть. В общем, если есть числа 4 3 2 1 и 10, то это бы считалось, как 1 2 3 4 10, потому что 10 это якобы число 0, которого нет. Но если есть 10, и нет комбинации чисел 10 9 8 7 6, то оно должно считаться за 0 только для комбинации 0 1 2 3 4. Вот Я не знаю, как сделать такую комбинацию с текущим положением чисел и индексов. Что нужно изменить, чтобы так получилось? И ещё. Тот же массив, только теперь надо взять просто 5 самых старших чисел не попорядку. Какими бы они не были и сколько бы раз не повторялись. Спасибо.

Решение задачи: «Изменение индекса в массиве»

textual
Листинг программы
using System;
 
namespace Nums2
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = 5;
            int[] A = new int[10];
            Random r = new Random();
            Console.Write("Начальный массив: ");
            for (int i = 0; i < A.Length; i++)
            {
                A[i] = r.Next(1, 11);
                Console.Write(A[i] + " ");
            }
            Console.WriteLine();
 
            // Нужно скопировать массив, чтобы второй вариант считался правильно
            int[] B = new int[A.Length];
            Array.Copy(A, B, A.Length);
 
            // Теперь сортируем массив B, сразу по убыванию
            Array.Sort(B, (x, y) => y - x);
 
            // Выводим 5 элементов 
            Console.Write("\nПять наибольших элементов: ");
            for (int i = 0; i < 5; i++)
                Console.Write(B[i] + " ");
            Console.WriteLine();
 
            // Теперь заполяем ту хитрую таблицу
            // Справа на лево
            int[] F = new int[A.Length];
            for (int i = A.Length - 2; i >= 0; i--)
            {
                // Если правый ээлемент меньше на единицу
                if (A[i] == A[i + 1] + 1)
                {
                    // То прибавляем к его длине "правильного" хвоста
                    // единицу
                    F[i] = F[i + 1] + 1;
                }
            }
 
            // Теперь ищем индекс максимального элемента массива A
            // у которого F больше 4
            int index = -1;
            for (int i = 0; i < A.Length; i++)
            {
                if (index != -1 && A[index] < A[i] && F[i] >= 4)
                    index = 4;
            }
 
            if (index == -1)
            {
                Console.WriteLine("\nНет нужной подпоследовательности");
            }
            else
            {
                Console.WriteLine("Подпоследовательность:");
                for (int i = 0; i < 5; i++)
                    Console.Write(A[i + index] + " ");
                Console.WriteLine();
            }
 
            Console.ReadLine();
 
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5
Похожие ответы